A. Pengertian
AVL Tree adalah Binary
Search Tree yang memiliki perbedaan tinggi/ level maksimal 1 antara
subtree kiri dan subtree kanan. AVL Tree muncul untuk menyeimbangkan Binary
Search Tree. Dengan AVL Tree, waktu pencarian dan bentuk tree dapat
dipersingkat dan disederhanakan. Selain itu terdapat 2 proses penyeimbangan
pada AVL Tree yaitu dengan cara Single rotation dan Double rotation.

Single rotation adalah rotasi yang di lakukan hanya
sekali agar sebuah tree AVL cara ini dapat menyelesaikan kasus luar.
Double rotation
Double
rotation adalah rotasi yang dilakukan lebih dari sekali dan sedangkan cara ini
untuk menyelesaikan kasus dalam.
Cara menentukan Height
dan Balance Factor :Note :
Height :
– Jika node (root) tidak
memiliki subtree heightnya = 0
– Jika node adalah leaf,
height = 1
– Jika internal node,
maka height = height tertinggi dari anak
+ 1
Balance Factor :
-selisih height antara
anak kiri dan kanan, jika tidak memiliki anak, dianggap 0.
AVL Tree Operations :
Insertion
Insert suatu node pada
AVL sama halnya pada insert node pada binary search tree, dimana node baru
diposisikan sebagai leaf. Setelah memasukkan node baru, maka harus dilakukan
penyeimbangan kembali pada path dari node yang baru di insert atau path
terdalam. Namun biasanya, path terdalam adalah path dari node yang baru saja di
insert.
Ada 4 kasus yang biasanya
terjadi saat operasi insert dilakukan, yaitu :
anggap T adalah node yang
harus diseimbangkan kembali
– Kasus 1 : node terdalam
terletak pada subtree kiri dari anak kiri T (left-left)
– Kasus 2 : node terdalam
terletak pada subtree kanan dari anak kanan T (right-right)
– Kasus 3 : node terdalam
terletak pada subtree kanan dari anak kiri T (right-left)
– Kasus 4 : node terdalam
terletak pada subtree kiri dari anak kanan T (left-right)
Ke-4 kasus tersebut dapat
diselesaikan dengan melakukan rotasi
– Kasus 1 dan 2 dengan
single rotation
– Kasus 3 dan 4
dengan double rotation
AVL Tree Operations :
Deletion
Operasi penghapusan
node sama seperti pada Binary Search Tree, yaitu node yang dihapus digantikan
oleh node terbesar pada subtree kiri atau node terkecil pada subtree kanan.
Jika yang dihapus adalah leaf, maka langsung hapus saja. Namun jika node yang
dihapus memiliki child maka childnya yang menggantikannya. Namun setelah
operasi penghapusan dilakukan, cek kembali apakah tree sudah seimbang atau
belum, jika belum maka harus diseimbangkan kembali. Cara menyeimbangkannya pun
sama seperti insertion.
http://dinda-dinho.blogspot.com/2013/06/pengertian-dan-konsep-avl-tree.htmlhttps://sikisik.wordpress.com/struktur-data/
https://strukturdata2015.wordpress.com/2015/12/01/week12/


No comments:
Post a Comment