Balance Binary Search Tree
and AVL Tree
Dalam Binary Search Tree, tinggi
maksimal suatu tree adalah N-1, dimana N adalah jumlah node. Dalam
melakukan suatu operasi, misalnya insertion, deletion, dan seaching, kecepatan
waktu merupakan hal yang cukup penting untuk diperhatikan. Setiap operasi pasti
di harapkan dapat berjalan dengan cepat, sehingga semakin cepat suatu operasi
maka semakin baik. Cepat atau tidaknya suatu operasi, bergantung pada
ketinggian tree tersebut, semakin rendah tingginya, maka semakin cepat.
Dengan Balanced Binary Search
Tree, kita dapat membuat suatu tree dengan tinggi minimum. Untuk menetapkan
tingginya, kita dapat menggunakan rumus : O(log n)
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.
Gambar AVL Tree
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) gambar 2.
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) gambar 3.
Menghapus node di AVL Tree
Proses menghapus sebuah node di AVL tree hampir
sama dengan BST. Penghapusan sebuah node dapat menyebabkan tree tidak imbang
Setelah menghapus sebuah node, lakukan pengecekan dari node yang dihapus →
root. Gunakan single atau double rotation untuk menyeimbangkan node yang tidak
imbang. Pencarian node yang imbalance diteruskan sampai root.
No comments:
Post a Comment