Monday, April 27, 2020

DATA STRUCTURE - AVL TREE


 AVL TREE

AVL Tree adalah Binary Search Tree yang memiliki perbedaan tinggi/ level maksimal 1 antara subtree kiri dan subtree kanan.AVL

AVL Tree digunakan untuk   menyeimbangkan Binary Search Tree. Dengan AVL Tree, waktu pencarian dan bentuk tree dapat dipersingkat dan disederhanakan.

Untuk menjaga tree tetap imbang, setelah penyisipan sebuah node, dilakukan pemeriksaan dari node baru → root. Node pertama yang memiliki |balance factor| > 1 diseimbangkan.


1. OPERASI INSERT : 
Ada 4 kemungkinan kasus yang terjadi saat melakukan operasi Insert yaitu :
*Misalkan 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)


vio - 1
Ke-4 kasus tersebut dapat diselesaikan dengan melakukan rotasi.
Rotasi ada 2 cara yaitu dilakukan dengan: Single rotation dan Double rotation
– Kasus 1 dan 2 dengan single rotation
– Kasus 3 dan 4 dengan double rotation


Contoh penggunaan :
1. SINGLE ROTATION
  Jika suatu Tree diinsert node baru dengan nilai 12, maka akan terjadi ketidak seimbangan dan hal ini terletak pada posisi root.

2. DOUBLE ROTATION
 Jika terdapat sebuah tree yang kemudian dilakukan insert node 26. Maka akan terjadi ketidak seimbangan, sehingga terlihat dari bentuknya dapat diselesaikan dengan kasus 4.

vio - 3




2. OPERASI DELETE :
 Terdapat 2 kasus yang biasanya terjadi saat operasi delete dilakukan, yaitu :
1. Jika node yang akan dihapus berada pada posisi leaf atau node tanpa anak, maka dapat langsung di hapus.
2. Jika node yang akan dihapus memiliki anak, maka proses penghapusannya harus di cek kembali untuk menyeimbangkan Binary Search Tree dengan perbedaan tinggi / level maksimal 1.

Berikut contoh dalam menghapus node AVL Tree, terdapat AVL Tree yang kemudian di hapus node 60. Dengan gambaran sebagai berikut :

Yang akan menggantikan posisi node 60 adalah node 55. Akan terjadi ketidak seimbangan. Dengan tampilan sebagai berikut :

Maka akan dilakukan single rotation pada node 55 dengan kasus ketidak seimbangan pada kasus no. 2. Dengan tampilan setelah dilakukan single rotation sebagai berikut :

Ketika sudah dilakukan single rotation dan dilakukan kembali perbedaan tinggi / level maksimal 1 ternyata terdapat ketidak seimbangan yang terjadi. Sehingga diperlukan double rotation dengan kasus no. 4. Sehingga hasil dari rotasi yang dilakukan adalah sebagai berikut :




Referensi :
http://dinda-dinho.blogspot.com/2013/06/pengertian-dan-konsep-avl-tree.html
https://www.geeksforgeeks.org/avl-tree-set-1-insertion/
https://socs.binus.ac.id/2017/05/15/deletion-avl-tree/


















No comments:

Post a Comment