Skip to main content

Heap dan Tries


Heap and Tries

Heap itu pada dasarnya adalah BST (Binary Search Tree) yang memenuhi psayarat dari properti heap. Heap juga dapat dibilang implementasi efisien dari tipe abstrak dengan antrian prioritas.
Ada 3 tipe heap, yaitu :
Min Heap
Dalam min heap, setiap node di atas lebih kecil dari pada childrennya. Contohnya seperti dibawah ini,

Untuk insert, urutannya selalu dari kiri baru ke kanan. Sebagai contoh apabila di insert angka 14 maka seperti dibawah ini,

Untuk deletion, nilai terakhir dinakkan ke atas dan melakukan heapifi apabila lebih kecil, sebagi contoh apabila root dihapus maka seperti ini,








Max Heap
Max hepa adalah kebalikan daripada min heap, Jadi node yang diatas lebih besar daripada childrennya, contohnya seperti berikut ini,


Untuk insert sama seperti min heap semuanya dimulai dari sebalah kiri, sebagai contoh apabila di insert angka 2 maka jadi seperti,


Untuk deletiosn juga sama seperti min heap jadi apabila di hapus rootnya maka angka terakhirnya naik menggantikan root dan heapifi apabila childrennya ada yang lebih besar. Sebagai contoh apabila root nya dihapus menjadi,



Min-Max Heap
Min max heap adalah gabungan dari min heap dan max heap,  jadi bagian paling atas itu adalah min heap  dan children dari min heap tersebut adalah max heap dan seterusnya.


Untuk insert min max heap dimulai dari sebelah kiri seperti biasa tetapi abis itu dilakukan heapifi agar urutannya tidak salah. Sebagai contoh apabila di insert angka 49 maka akan di cek ke grand parentnya apakah lebih besar atau tidak, karena 50 lebih besar dari 34 maka di tukar tempatnya. Karena tidak ada grand parent lagi maka sudah selesai. Contoh treenya seperti dibawah ini


Untuk delete sama seperti heap lainnya, apabila masih belum urut maka dilakukan heapifi. Jadi apabila kita ingin menghapus angka terbesar yaitu 49, maka angka terakhir yaitu 34 ditukar dengan 49. Karena sudah urut dan tidak merusak syarat dan properti min max heap maka sudah selesai. Jadi treenya menjadi seperti berikut ini,




Tries

Tries adalah tree yang digunakan untuk menyimpan set yang dinamis atau associative array, biasanya berupa string. Dapat lebih efektif dan juga efisien. Tries itu biasanya digunakan dalam game-game bubble words. Contoh tries adalah sebagai berikut,


Comments

Popular posts from this blog

Linked List II 1. Circular single Linked list Single linked list adalah satu variabel pointer untuk menyimpan data dengan metode linked list. Data disimpan ke dalam node, setiap node memiliki pointer untuk menunjuk ke node berikutnya. Nah, kalau Circular single linked list itu sama seperti single linked list tetapi setiap node awalnya menyambung dengan node akhir seperti lingkaran, selalu menyambung. Ini adalah ilustrasi perbedaan single linked list (atas) dan circular single linked list(bawah) 2. Doubly linked list Adalah Linked list yang mempunya dua pointer yaitu pointer prev dan next. Pointer prev digunakan untuk menunjukkan ke data sebelumnya dan sebaliknya kalau pointer next menunjukkan ke data selanjutnya Contoh code untuk double linked list : Insert pertama (Dari Depan) Insert dari depan itu adalah penyisipan yang ada di awal, dan pointer head akan pindah ke elemen / data baru, contohnya: Insert Terakhir (Dari Belakang) In...

AVL Tree Summary

AVL TREE AVL Tree merupakan Binary Search Tree (BST) yang seimbang sehingga lebih cepat untuk mencarinya dibanding dengan BST. Didalam AVL keseimbangan haruslah sangat diperhatikan tiap node tidak boleh kurang dari -1 dan tidak boleh juga lebih dari 1. Cara menentukan apabila balance atau tidak adalah dengan jumlah bagian terpanjang sebelah kanan - bagian terpanjang sebelah kiri. Berikut adalah Contoh AVL Tree: Diatas adalah contoh AVL Tree yang sempurna karena perbedaan antara yang kanan dengan yang sebelah kiri adalah 0. Di AVL Tree setiap setelah melakukan Insertion atau deletion harus di cek kembali keseimbangan di dalam AVL Tree-nya, Apabila AVL Tree belum seimbang maka ada dua kemungkinan cara untuk menyeimbangkan Tree tersebut. Yang pertama adalah dengan menggunakan Single Rotation Dibawah ini adalah contoh AVL Tree yang tidak seimbang: Karena yang bagian sebelah kiri – bagian sebelah kanan adalah 2 maka AVL Tree di...

RANGKUMAN DATA STRUCTURE DARI PERTEMUAN AWAL

Nama : Muhamad Faqih NIM : 2301887931 Kelas : CB01 Lecturer : Ferdinand Ariandy Luwinda (D4522) dan Henry Chong (D4460) SUMMARY DATA STRUCTURE DARI PERTEMUAN AWAL Linked List II 1. Circular single Linked list Single linked list adalah satu variabel pointer untuk menyimpan data dengan metode linked list. Data disimpan ke dalam node, setiap node memiliki pointer untuk menunjuk ke node berikutnya. Nah, kalau Circular single linked list itu sama seperti single linked list tetapi setiap node awalnya menyambung dengan node akhir seperti lingkaran, selalu menyambung. Ini adalah ilustrasi perbedaan single linked list (atas) dan circular single linked list(bawah) 2. Doubly linked list Adalah Linked list yang mempunya dua pointer yaitu pointer prev dan next. Pointer prev digunakan untuk menunjukkan ke data sebelumnya dan sebaliknya kalau pointer next menunjukkan ke data selanjutnya Contoh code untuk double linked list ...