HEAPS &TRIES
Heaps & Tries
Heaps adalah sebuah binary tree khusus yang digunakan untuk menyimpan data secara berurutan/sorted. Hal tersebut membuat pencarian menjadi lambat namun mempercepat pemasukan data serta root dari tree tersebut dapat dengan mudah dihapus.
Tries yang dibaca sebagai "Trees" adalah sebuah tree yang tidak mementikan keberadaan dari nodes, namun key/value dapat dikaitkan dengan edges dan node hanya ada untuk mengisi. Value sebenarnya dari tree ini hanya terdapat pada leaves dan sibling memiliki hubungan yang disebuit common prefix.
A. HEAPS
- Heaps sangatlah mirip dengan BST, mereka memilki dua valua namun tidak seperti BST, dimana children memiliki nialai yang selalu lebih kecil dibandingkan parentnya (atau nilai yang lebih besar pada min tree). Dalam arti root akan selalu memiliki nilai paling besar
- Karena heaps tidak begutu ketet terhadap urutan, maka dari itui memasukkan data lebih cepat daripada memasukkannya pada sorted array dikarenakan [0(log n)].
- Heaps juga lebih cepat dalam memasukkan data daripada BST dikarenakan kedalaman atau tinggi dari Tree dan juga dengan mudah Heaps Tree dapat tetap seimbang.
- Namun kelemahan dari Heaps adalah saat mencari data.
- Kelebihannya yang lain adalah efisiensi dalam penghapusan Root dari Tree-nya
Heaps biasanya memiliki 2 bentuk yaitu, Max Heap dan Min Heap.
Cara kerja Heap :
- Heaps biasanya tersimpan pada sebuah array karena heaps adalah sebuah binary tree yang dapat dengan cepat menghitung node children berdasarkan indexnya
- Kelemahannya ialah diperlukan memori yang telah dialokasi terlebih dahulu atau membuat ukuran maxnya ataupun membuat array dinamik.
- Menambahkan data ke Heap bisa disebut sebagai "up-heap”, “bubble up” dan “trickle up”.
- Menambahkan node biasanya ditaruh di yang paling bawah pada nilai pertama yang terbuka
- Jika Node barunya bernilai lebih kecil daripada Parent-nya maka lakukan swap dan terus diulang hingga sesuai
- Pengurangan data ke Heap bisa disebut sebagai "downheap”, “bubble-down" dan “trickle-down”.
- Pindahkan nilai dari yang terakhir diisi menjadi 0.
- Jika Node barunya bernilai lebih besar daripada Child-nya maka lakukan swap dan terus diulang hingga sesuai.
Contoh pada MIN Heap
> Insert 12
> Delete Root
B. TRIES
- Tries biasanya digunakan sebagai cara cepat untuk sort dan insert data sekaligus sebagai spellchecker, autocomplete dan juga search engines.
- Root pada Tries tidak memiliki karakter/("")
- Node Tries biasanya berisi karakter.
- Kelebihan
- Dapat dengan cepat mencari case terburuk daripada hash table yang tidak sempurna
- Tidak perlu mementingkan hash yang buruk dan juga collision yang buruk
- Dengan mudah membagikan sebuah listing berurutan tanpa struktur data tambahan/
- Kekurangan
- Pencarian pada Tries dapat lebih lambat daripada Hash, tepatnya jika mesin yang digunakan memiliki waktu random-access yang buruk
- Tidak baik digunakan saat ada chains yang tidak berguna
- Dapat menggunakan memori ynag lebih banyak daripada hash table
Contoh dari Tries
> Insertion
Kata-kata yang terdapat pada Tries di atas yaitu :
- Bean
- Bed
- Bee
- Bell
- Brew
- Bread
- Break












