Struktur Data: AVL Tree
Apa itu AVL Tree? AVL Tree merupakan sebuah BST yang bisa menyeimbangkan dirinya sendiri antara kanan dan kiri. Seimbang di sini maksudnya perbedaan panjang antara kaki kanan dan kaki kiri tree nya tidak lebih dari 1. Contoh gambarnya seperti ini:Nah bisa diliat dari contoh gambar di atas kalo panjang kaki kiri dan kanan nya sama (sejajar). Itu yang disebut AVL Tree.
Nah kalo gambar yang itu bukan AVL, kenapa? Karena kaki kiri nya kepanjangan!
Terus kalo gitu gimana caranya AVL menyeimbangkan dirinya sendiri? Hayo gimana, kepo ya?
Jadi gini, si AVL itu bisa nyeimbangin dirinya sendiri dengan cara melakukan perputaran node di kaki yang terpanjang. Perputarannya sendiri terdiri dari 2 jenis, yaitu single rotation dan
Single Rotation
Single rotation akan dilakukan ketika kaki yang terpanjangnya memiliki arah yang lurus. Maksudnya gimana tuh? Jadi gini, liat gambar di bawah ini:Bisa diliat dari gambar di atas, kaki terpanjangnya ada di sebelah kiri. Nah dari root ke kaki paling bawah (angka 2) itu lurus aja garisnya, ga ada belokan sama sekali. Untuk menyeimbangkannya maka akan dilakukan single rotation dengan cara "menarik" node 8 ke kanan (seperti katrol) lalu memindahkan node 7 ke kirinya node 8. Jadinya ntar kaya gini pohonnya:
Double Rotation
Cara yang kedua ini dilakukan jika kaki terpanjang dari treenya belok kaya gambar kedua dari atas tadi yang node nya warna biru. Gimana caranya? Kalo ngikutin gambar itu, yang pertama dilakukan ialah dengan menukar posisi node 8 dengan node 9 (biar jadi lurus), terus akan dilakukan rotasi kedua sama di node 13. Jadinya kaya gini nanti hasil akhirnya:Referensi
- https://www.geeksforgeeks.org/avl-tree-set-1-insertion/
- http://dinda-dinho.blogspot.com/2013/06/pengertian-dan-konsep-avl-tree.html
- https://www.cs.usfca.edu/~galles/visualization/AVLtree.html
Komentar
Posting Komentar