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