Skip to main content

AVL Tree


AVL tree adalah nama berasal dari dua penciptannya yaitu, G.M. Adelson-Veleskii and E.M. Landis. AVL tree adalah self-balancing binary search tree pertama yang pernah diciptakan. AVL tree digunakan untuk menyeimbangkan Binary Search Tree, untuk mempersingkat pencarian dan menyederhanakan bentuk tree.

Contoh:

Insertion di AVL Tree
Insertion pada AVL tree adalah insertion biasa seperti yang digunakan pada binary search tree. Tetapi ini dapat menyebabkan pelanggaran pada properti AVL Tree. Setelah melakukan insertion biasa maka kita harus benarkan menjadi kondisi yang seimbang.
Selanjutnya, kembalikan kondisi keseimbangan. Pertama, lacak jalur dari kunci baru menuju root. Untuk setiap node yang A lewati, periksa apakah ketinggian kiri A dan kanan A berbeda pada paling banyak 1. Jika ya, lanjutkan ke parent A. Jika Tidak, perbaiki sub pohon A baik dengan single rotation atau double rotation.

Single Rotation
Single rotation dilakukan jika searah (left-left atau right-right)


Double Rotation
Double rotation dilakukan jika tidak searah (left-right atau right left)

Rotasi pertama
Rotasi kedua

Delete di AVL tree
Hapus node seperti pada Binary Search Tree biasa. Node yang dihapus akan berupa leaf atau node dengan satu child. Lacak jalur dari parent dari leaf yang dihapus ke arah root. Untuk setiap node yang A lewati, periksa apakah ketinggian kiri A dan kanan A berbeda paling banyak 1. Jika ya, lanjutkan ke parent A. Jika tidak, perbaiki sub pohon A dengan single rotation atau double rotation. Setelah kita melakukan rotasi pada A, kita mungkin harus melakukan rotasi pada beberapa ancestor A. Jadi, kita harus terus melacak jalan sampai kita mencapai root.

Comments

Popular posts from this blog

Rangkuman Data Structure

Warren 2301858093 Kelas: CB01-CL Lecturer:  Ferdinand Ariandy Luwinda (D4522),  Henry Chong (D4460) Linked List Linked list adalah struktur data yang terdiri dari urutan – urutan data yang memilki referensi untuk data selanjutnya. Linked list bisa melakukan insertion dan deletion tipe apapun dan dimanapun. Linked list biasa digunakan untuk “solving real-time problems”, saat jumlah data yang ingin disimpan tidak dapat diprediksi. Ada dua tipe linked list yaitu single linked list dan double linked list. Single Linked List Single linked list ditandai dengan memiliki link satu arah dari list yang menunjuk ke list lain. Systemnya berjalan dengan pointer dari Head lalu next sampai NULL. Doubly Linked List Systemnya seperti single linked list, tetapi sekarang dia dapat jalan mundur juga (previous). Circular Linked List “previous” pointer dari node pertama (head) akan “points” ke node terakhir (tail) membuatnya tidak bernilai null. pointer “next” ...