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
Posting Komentar