AVL TREE
AVL Tree adalah Binary Search Tree yang memiliki perbedaan tinggi antara subtree
kiri dan subtree kanan. AVL Tree digunakan untuk menyeimbangkan Binary Search
Tree, sehingga waktu pencarian dan bentuk tree dapat dipersingkat dan
disederhanakan.
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)
Proses penyeimbangan dalam AVL TREE
1. Single Rotation
Dilakukan bila kondisi AVL tree ditambahkan node baru. Dimana T1, T2,
dan T3 adalah subtree yang urutannya harus seperti demikian sama dengan height-nya
(≥ 0). Hal ini juga berlaku untuk AVL tree yang merupakan citra
cermin (mirror image).
2. Double Rotation
Double rotation dilakukan bila kondisi AVL tree ditambahkan node
baru. Dimana T1, T2, T3, dan T4 adalah subtree yang urutannya harus seperti
demikian. Tinggi subtree T1 harus sama dengan T4 (≥ 0), tinggi subtree T2 harus
sama dengan T3 (≥ 0). Node yang ditambahkan akan menjadi child dari subtree T2
atau T3. Hal ini juga berlaku untuk AVL tree yang merupakan citra cermin (mirror
image).
Deletion AVL
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.
node 55 tidak seimbang,
karena anak kiri 0 dan anak kanan 2, selisih 2.
diseimbangkan dengan
single rotation (left-left) karena 55 ke 65 kiri dan 65 ke 70 kiri
akan tetapi, node 50
menjadi tidak seimbang, di subtree kiri 4 dan subtree kanan 2
|
sumber :
https://socs.binus.ac.id/2017/05/15/deletion-avl-tree/
http://dinda-dinho.blogspot.com/2013/06/pengertian-dan-konsep-avl-tree.html
http://suciantinovi.blogspot.com/2014/05/balanced-binary-tree-and-2-3-tree.html
Komentar
Posting Komentar