AVL Tree diciptakan oleh Adelson-Velskii dan Landis. AVL Tree merupakan Binary Search Tree yang memiliki selisih tinggi / level maksimal 1 antara subtree kiri dan subtree kanan. AVL Tree mempersingkat waktu pencarian dan menyederhanakan bentuk tree.
Tree diatas merupakan AVL karena selisih subtree kiri dan subtree kanan memenuhi salah satu syaratnya yaitu sama dengan 1.
Di bawah ini adalah tree yang bukan AVL karena selisih subtree kiri dan subtree kanan sama dengan 2, yang berarti tidak memenuhi syarat.
INSERTION
Untuk insertion AVL Tree terdapat 4 case:
1. Single Rotation
Kasus 1 Left-Left Case akan diselesaikan dengan Right Rotate dan menjadi:
18
/ \
5 27
Kasus 2 Right-Right Case akan diselesaikan dengan Left Rotate dan menjadi:
45
/ \
30 75
2. Double Rotation
Kasus 3 Right-Left Case akan diselesaikan dengan Right Rotate lalu Left Rotate menjadi:
(1) Right Rotate
50
\
63
\
72
(2) Left Rotate
63
/ \
50 72
Kasus 4 Left-Right Case akan diselesaikan dengan Left Rotate lalu Right Rotate menjadi:
(1) Left Rotate
37
/
22
/
16
(2) Right Rotate
22
/ \
16 37
DELETION
Operasi penghapusan node pada AVL Tree sama seperti pada Binary Search Tree, yaitu node yang dihapus digantikan oleh node yang memiliki nilai terbesar pada subtree kiri atau node yang memiliki nilai terkecil pada subtree kanan.
(1) Jika node yang dihapus adalah leaf, maka node tersebut langsung dihapus.
(2) Jika node yang dihapus memiliki child, maka childnya yang akan menggantikannya. Setelah itu, akan dilakukan pengecekan apakah tree sudah memenuhi syarat AVL, jika belum makan akan diseimbangkan yaitu dengan cara yang sama dengan insertion.
Sumber:
Comments
Post a Comment