AVL Tree


AVL Tree
AVL Tree adalah singkatan untuk Adelson-Velskii and Landis, AVL adalah bagian atau subtype dari Binary Search Tree (BST). Konsep AVL Tree adalah selisih dari height kiri dan kanan subtree tidak boleh lebih dari 1.

AVL tree harus selalu balance, sehingga setiap melakukan operasi akan di cek selisih height kiri dan kanan subtree jika lebih dari 1 maka disebut violation. Berikut adalah contoh dari violation, jika dilihat height dari subtree kiri 17 adalah 2 dan subtree kananya 0 maka selisihnya 2 ( violation ).


AVL Tree Rotation
Seperti yang telah saya katakan bahwa setiap operasi kita perlu mengecek balance nya, jika tidak balance maka kita harus membuatnya balance dengan operasi rotation. Terdapat 2 jenis rotation, yaitu:

1. Single Rotation
Dalam single rotation terdapat dua jenis, jika violation terjadi pada subtree kanan maka left rotation, dan jika violation terjadi pada subtree kiri maka right rotation.
               
AVL Tree Left Rotation
               






               
AVL Tree Insertion, Rotation, and Balance Factor Explained












2. Double Rotation
Left-Right RotationMerupakan kombinasi dari single rotation, ketika case dimana violation pada subtree kiri memiliki anak kanan maka dilakukan operasi left right rotation dan sebaliknya pada right left rotation.













AVL Tree Deletion
Deletion pada AVL tree sama dengan Binary Search Tree. Namun, setiap melakukan delete akan di cek balancenya agar tetap seimbang, jika tidak seimbang maka akan di lakukan rotation lagi.

Kesimpulan, AVL Tree berguna untuk case database dimana insertion dan deletion karena lebih cepat. Kebanyakan operasi BST menggunkan O(h) dimana h adalah height dari tree, sedangkan AVL tree pada worst case akan memakan waktu O(logn).  

- Febryan Stefanus Tandian - 2301942406


Comments

Popular posts from this blog

Heap & Tries

Linked List II