AVL Trees


AVL trees mirip dengan binary search tree. Hanya saja AVL memiliki perbedaan yaitu akan menyeimbangkan ketinggian dari subtrees kiri dan kanan. Perbedaan ketinggian dari subtrees kiri dan subtrees kanan kurang dari atau sama dengan 1.

Contoh diatas merupakan AVL tree karena perbedaan ketinggian dari subtrees kiri dan kanan kurang atau sama dengan satu.



Sedangkan untuk gambar ke dua bukan merupakan avl karena perbedaan ketinggian dari subtrees kiri dan kanan lebih dari satu.

Keuntungan dalam menggunakan AVL Tree adalah jika kita menggunakan BST / Binary Search Tree untuk mempercepat pencarian data, maka dengan menggunakan AVL akan menjadi semakin cepat lagi karena seimbang serta tidak memakan tempat di ketinggian yang lain. Sehingga waktu pencarian data tidak lebih dari log2n langkah.

vio - 1
Ada 4 kasus dalam operasi insert, yaitu:
T adalah node yang harus diseimbangkan.
1.       Node terdalam terletak pada subtree kiri dari anak kiri T (left-left).
2.       Node terdalam terletak pada subtree kanan dari anak kanan (right-right).
3.       Node terdalam terletak pada subtree kanan dari anak kiri T ( right-left).
4.       Node terdalam terletak pada subtree kiri dari anak kanan T (left-right).

Untuk kasus 1 dan 2 dapat diselesaikan dengan single rotation. Sedangkan untuk kasus 3 dan 4 dapat diselesaikan dengan double rotation.
Contoh single rotation:
Jika suatu Tree diinsert node baru dengan nilai 12, maka akan terjadi ketidak seimbangan dan hal ini terletak pada posisi root.
 vio - 2
Contoh double rotation:
Jika terdapat sebuah tree yang kemudian dilakukan insert node 26. Maka akan terjadi ketidak seimbangan, sehingga terlihat dari bentuknya dapat diselesaikan dengan kasus 4
 vio - 3
Perbedaan dengan Red Black Tree adalah AVL tree lebih seimbang hanya saja bisa melakukan rotasi yang lebih banyak selama insertions dan deletion dibandingkan denga Red Black Tree. Sehingga jika aplikasi kita mengunakan insertion dan deletion yang banyak, maka tentu sangat dianjurkan menggunakan Red Black Tree. Sedangkan jika sebaliknya maka AVL sangat dianjurkan.

Sumber:

Comments