AVL Tree
AVL Tree adalah Binary Search Tree yang
memiliki perbedaan tinggi/ level maksimal 1 antara subtree kiri dan
subtree kanan. AVL Tree muncul untuk menyeimbangkan Binary Search Tree.
Dengan AVL Tree, waktu pencarian dan bentuk tree dapat dipersingkat dan disederhanakan.
Penambahan
node di AVL Tree
Untuk menjaga tree tetap imbang, setelah penyisipan sebuah node, dilakukan
pemeriksaan dari node baru → root. Node pertama yang memiliki |balance factor|
> 1 diseimbangkan. Proses penyeimbangan dilakukan dengan: Single
rotation dan Double rotation
Single Rotation
Single rotation dilakukan bila
kondisi AVL tree waktu akan ditambahkan node baru dan posisi node baru seperti
pada gambar 2. T1, T2, dan T3 adalah subtree yang urutannya harus seperti
demikian serta height- nya harus sama (≥ 0). Hal ini juga berlaku untuk AVL
tree yang merupakan citra cermin (mirror image)
Double Rotation
Double rotation dilakukan bila
kondisi AVL tree waktu akan ditambahkan node baru dan posisi node baru seperti
pada gambar 3. T1, T2, T3, dan T4 adalah subtree yang urutannya harus seperti
demikian. Tinggi subtree T1 harus sama dengan T4 (≥ 0), tinggi subtree T2 harus
sama dengan T3 (≥ 0). Node yang ditambahkan akan menjadi child dari subtree T2
atau T3. Hal ini juga berlaku untuk AVL tree yang merupakan citra cermin
(mirror image).
Menghapus node di AVL Tree
1. Menghapus
node pada AVL Tree sama dengan menghapus binary search tree procedure dengan
perbedaan pada penanganan kondisi tidak balance.
2. Penanganan
kondisi tidak balance pada operasi menghapus node AVL tree, serupa dengan pada
operasi penambahan. Mulai dari node yang diproses (dihapus) periksa seluruh
node pada jalur yang menuju root (termasuk root) untuk menentukan node tidak
balance yang pertama
3.
Terapkan single atau double rotation untuk menyeimbangkan tree.
4. Bila Tree
masih belum balance, ulangi lagi dari langkah 2.
Source :
Komentar
Posting Komentar