Langsung ke konten utama

AVL Tree

Nama: Bryan Frederick
NIM : 2301871984

AVL Tree

AVL Tree adalah binary search tree yang diseimbangkan, maksudnya diseimbangkan jadi dalam binary tree itu ada namanya perbedaan tinggi, nah untuk perbedaan tinggi ini untuk avl tree maksimalnya 1, jadi boleh 1 atau 0. tapi apa yang akan terjadi jika 2? nah itu yang akan diibahas. tapi sebelum itu kita harus tau bahwa prinsip binary tree itu memiliki anakan 2.

avl-1.gif
jadi ini contoh gambar binary tree yang tidak simetris.
avl-4.gif
Nah dapat diperhatikan dalam gambar ini bahwa binary tree ini belum termasuk avl tree karena ada tinggi yang 2, jadi ketinggian yang dimaksud dapat dilihat anakannya, pada node 17 anakan sebelah kirinya ada 2 yaitu 14 dan 16 dan sebelah kanan tidak ada, maka ketinggiannya 2-0 = 2. Nah ini perlu diperbaiki.
Dalam memperbaiki ini ada 2 jenis perbaikan yang dapat dilakukan yaitu single rotation dan double rotation.
Contoh ini ada kasus :

avl-6.gif
Dapat dilihat bahwa node 30 tidak seimbang maka ini harus diperbaiki, bagaimana kita tahu bahwa ini menggunakan single rotation, caranya lihat garis biru itu, garis itu menandakan bahwa yang tidak seimbang merupakan garis lurus tidak bengkok berarti itu bisa menggunakan single rotation. Jadinya seperti ini.
avl-7.gif
Nah ini anggap 30 jadi poros lalu ditarik ke kanan, maka otomatis 30 jadi sebelah kanannya 22 dan sebelah kanan 22 dianggap dimasukkan ulang menjadi demikian.

Lalu double rotation bagaimana, kalua single dapat dipakai karena lurus maka jika ada bengkokan maka kita gunakan double rotation. Contoh:
avl-14.gif
Nah ini bengkokannya ada pada node 22 yaitu kearah kanan, makaavl-15.gif
Yang menjadi poros pertama adalah node 22 yang ditarik ke sebelah kiri maka node 27 menjadi poros baru setelah itu.
avl-16.gif
Nah lalu putaran kedua yaitu porosnya ada pada node 30 sehingga ditarik ke sebelah kanan.
Untuk node yang berwarna hijau itu sebetulnya yang mempengaruhi ketidak seimbangan tree tersebut.
Demikian materi AVL yang dapat saya sampaikan.
Sumber: binusmaya resources


Komentar

Postingan populer dari blog ini

Linked List Bryan Frederick(2301871984) Linked list adalah koleksi data item yang tersusun dalam sebuah barisan, dengan penyisipan dan pemindahan dapat dilakukan dalam semua tempat atau linked list juga bisa diartikan sebagai sebuah data yang digunakan untuk menyimpan node atau value. Dalam linked list terbagi menjadi 2 yaitu single linked list dan double linked list. Single linked list adalah sebuah linked list yang menggunakan sebuah variabel pointer saja untuk menyimpan banyak data dengan suatu daftar isi yang saling berhubungan, sedangkan, double linked list adalah mengatasi kelemahan-kelemahan dalam single linked list contohnya dengan dua buah pointer yaitu prev dan next. ada 4 kondisi yang perlu diperhatikan dalam deleting node untuk doubly linked list(jika ingin mendelete node): 1. node yang akan dihapus adalah satu-satunya simpul dalam daftar tertaut. 2. node yang akan dihapus adalah head. 3. node yang akan dihapus adalah tail. 4. node yang akan dihapus bukan head a...