CA01-011 Heap & Tries

Max Heap : pohon yang parentnya selalu lebih besar dari anaknya

Min Heap : pohon yang parentnya selalu lebih kecil dari anaknya
Min-Max Heap : Pohon yang selang-seling parentnya


Heap biasanya menggunakan array, tapi bisa menggunakan linked list juga.
Dimulai dari 1 untuk memudahkan mencari node.

Insert dalam heap dilakukan dengan seperti berikut:
1.       Insert node seperti dalam Binary Tree
2.       cek apakah angka tersebut memenuhi syarat (lebih besar dari parentnya untuk min heap, lebih kecil dari parentnya untuk max heap)
3.       Jika salah, maka angka tersebut ditukar dengan parentnya
4.       lakukan step 2 dan 3 sampai node tersebut memenuhi syaratnya, atau node tersebut berada di posisi root
aksi yang dilakukan tersebut disebut Heapify Up
untuk delete dilakukan sebagai berikut:
1.       hapus root dari pohon tersebut
2.       insert elemen paling terakhir yang di-insert
3.       cek apakah angka tersebut memenuhi syarat (lebih kecil dari childnya untuk min heap, lebih besar dari childnya untuk max heap)
4.       Jika salah, maka angka tersebut ditukar dengan parentnya
5.       lakukan step 3 dan 4 sampai node tersebut memenuhi syaratnya, atau node tersebut berada leaf/tidak punya child lagi

aksi yang dilakukan tersebut adalah Heapify Down
Insert dan delete min-max heap dilakukan dengan cara berikut:
Insert
1.       Insert node seperti dalam Binary Tree
2.       cek apakah angka tersebut memenuhi syarat (lebih besar dari parentnya untuk level min, lebih kecil dari parentnya untuk level max)
3.       Jika salah, maka angka tersebut ditukar dengan parentnya
4.       lakukan step 2 dan 3 sampai node tersebut memenuhi syaratnya,
5.       kemudian, cek apakah angka tersebut memenuhi syarat terhadap grandparent/2 depth di atasnya. Jika tidak memiliki grandparent, berhenti.
6.       Jika salah, maka angka tersebut ditukar dengan grandparentnya
7.       lakukan step 5 dan 6 sampai node tersebut memenuhi syaratnya, atau node tersebut berada di posisi root.
Delete (min)
Dimisalkan x adalah elemen terkecil dari children dan grandchildren dari node yang ingin dihapus
1.       jika x adalah grandchildren dari node tersebut
1. 1 jika x lebih kecil dari node tersebut, tukar node tersebut dengan x.
1. 2 jika x lebih besar dari parent, maka tukar x dengan parentnya
1. 3 lakukan 1.1 dan 1.2 hingga sesuai dengan syaratnya

2.        jika x adalah children dari node tersebut
1. 1 jika x lebih kecil dari node tersebut, tukar node tersebut dengan x.

Id parent (x) = x/2
Id left-child (x) = 2*x
Id Right-child(x) = 2 * x + 1

Tries digunakan di autocomplete, searching, buble words, list/set/collection
Tries : sebuah tree yg vertex/nodenya mewakili satu kata


-character
-Map (Character,Trie)
-Bool IsEnd

Komentar

Postingan populer dari blog ini

CA01-006

CA01-004