AVL Tree merupakan tipe binary tree yang dapat menyeimbangkan / self-balancing dirinya sendiri dimana perbedaan tinggi / height dari subtrees kiri dan kanan tidak boleh lebih dari satu untuk semua nodes. Kegunaan dari AVL Tree adalah mempercepat dan membuat operasi BST lebih efisien.
Contoh A |
Contoh B |
AVL Tree Insertion [Rotations]
Rotasi / Rotations AVL Tree dapat dibagi menjadi dua jenis yakni,
a. Single Rotation
Single Rotation dapat dibagi menjadi dua jenis yakni,
Single Left Rotation [LL Rotation]
Single Right Rotation [RR Rotation]
b. Double Rotation
Double Rotation dapat dibagi menjadi dua jenis yakni,
Left Right Rotation [LR Rotation]
Right Left Rotation [RL Rotation]
Penjelasan
Single Rotation
Jika treenya menjadi unbalanced, saat sebuah node di insert ke kanan subtree dari subtree kanan maka kita melakukan single left rotation.
LL Rotation |
RR Rotation |
Double Rotation
Left Right rotation adalah kombinasi dari left rotation lalu diikuti dengan right rotation, agar lebih dapat dipahami dapat dilihat dari gambar di bawah.
Sebuah node telah diinsert ke subtree kanan dari subtree kiri, hal ini membuat tree menjadi tidak balance.
|
Deletion
Deletion pada AVL Tree sama dengan Deletion pada BST, tetapi Deletion pada AVL Tree dapat menyebabkan ketidakseimbangan / unbalance pada tree. Untuk membuat AVL Tree tetap AVL Tree setelah deletion maka diperlukannya penyeimbangan ulang / re-balancing pada tree.
References:
https://www.tutorialspoint.com/data_structures_algorithms/avl_tree_algorithm.htm
https://www.geeksforgeeks.org/avl-tree-set-1-insertion/
https://www.geeksforgeeks.org/avl-tree-set-2-deletion/
https://binusmaya.binus.ac.id/newStudent/#/class/resources.COMP6048/010544/1920/LEC/12104
No comments:
Post a Comment