Sabtu, 02 Mei 2020

Rangkuman AVL Tree

Nama  : Carel Prianugra Ceri Pratama
NIM    :  2301908715
Kelas  :   CD01 / LY01                                              

Rangkuman AVL Tree

 Pengertian AVL Tree

            Avl Tree adalah binary search tree yang memiliki perbedaan tinggi antara subtree kiri dan subtree kanan maksimal 1. AVL tree  ditemukan oleh  G.M. Adelson Veleskii dan E.M. Landis . Tujuan AVL Tree adalah  untuk menyimbangkan Binary Search Tree, sehingga waktu pencarian menjadi lebih singkat.
ini adalah contoh AVL Tree.
       

Insertion dalam AVL Tree

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)

contoh 4 kasus yang biasanya terjadi saat operasi insert dilakukan


Dalam AVL Tree terdapat konsep rotation. Rotation adalah konsep memutar node pada tree. Terdapat 2 rotation dalam AVL Tree yaitu left rotation dan right rotation. Left rotation adalah memutar node yang bersangkutan ke kiri, sedangkan Right rotation adalah memutar node yang bersangkutan ke kanan.

Ke-4 kasus tersebut dapat diselesaikan dengan melakukan rotation sebagai berikut
– Kasus 1 dan 2 dengan single rotation



– Kasus 3 dan 4 dengan double rotation

 Deletion dalam AVL Tree

      Dalam AVL Tree, terdapat 2 kasus dimana biasanya deletion dilakukan . yaitu, jika node yang akan dihapus berada pada posisi leaf (tidak punya anak) dan jika node yang akan dihapus memiliki anak. Jika node yang akan dihapus tidak memiliki anak, maka dapat langsung dihapus. Jika node yang akan dihapus memiliki anak, maka kita harus cek kembali agar perbedaan tinggi/level maksimal nya tidak lebih dari 1.

Ada 4 kasus yang biasanya terjadi saat operasi deletion dilakukan yaitu sebagai berikut: 

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)


Berikut adalah contoh operasi deletion. node yang akan dihapus adalah node 60. node yang akan menggantikan node 60 adalah 55. sehingga, terjadi ketidak seimbangan seperti gambar di bawah.



 Karena tree tidak seimbang, maka dilakukan single rotation pada node 55 seperti berikut 


Setelah dilakukan single rotation, ternyata masih ada ketidakseimbangan yang terjadi. Oleh karena itu kita harus melakukan double rotation 



Hasilnya adalah seperti gambar di bawah




Sumber
http://algostrukturdata.blogspot.com/2014/05/avl.html






Tidak ada komentar:

Posting Komentar