Langsung ke konten utama

AVL TREE

AVL Tree merupakan salah satu jenis BST (binary Search Tree). BST digunakan dengan tujuan untuk mempercepat pencarian data. Apabila BST yg terbentuk cukup seimbang (mendekati complete binary tree) maka waktu pencarian data tidak lebih dari log2n langkah.

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.





Cara menentukan Height dan Balance Factor:

Height:
- Jika node(root) tidak memilik 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 Operation

A.Insertion
 Insert suatu node pada AVL sama halnya pada insert node pada binary search tree, dimana node baru diposisikan sebagai leaf. Setelah memasukan node baru, maka harus dilakukan penyeimbangan kembali pada path dari node yang baru di insert atau path terdalam. 

Ada 4 Kasus yang biasanya terjadi saat operasi insert:
1. Node terdalam terletak pada subtree kiri dari naak kiri T (left-left)
2. Node terdalam terletak pada subtree kanan dari anak kanan T (right - right)
3. Node terdalam terletak pada subtree kanan dari anak kiri T (right - left)
4. Node terdalam terletak pada subtree kiri dari anak kanan T(left- right)

Cara menangani keempat kasus tersebut ada 2 cara:
1. Single rotation
Single rotation(rotasi 1x) dilakukan apabila searah, left - left atau right- right.
Berikut gambar dari operasi single rotation


2.Double rotation
Double rotation(rotasi 2x) apabila searah, left- right atau right -left
berikut gambar dari operasi double rotation,





B. Deletion
Operasi deletion node sama seperti pada Binary Search Tree, yaitu node yang dihapus digantukan oleh node terbesar pada subtree kiri atau node terkecil pada subtree kanan. Jika yang dihapus adlaah 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 sama seperti operasi insertion.

Berikut conoth dari operasi Deletion


*Kita ingin menghapus node (60)





Refference:









Komentar

Postingan populer dari blog ini

IZIP - Easy Parking

  LAPORAN PROTOTYPE UI/UX LAPORAN PROTOTYPE UI/UX IZIP – EASY PARKING HUMAN AND COMPUTER INTERACTION Diusulkan oleh: Dea Claresta – 2301863736 Julian Andhika Diputra- 2301858023 Bryan Aleron – 2301846181 Frans Fericia – 2301852096 UNIVERSITAS BINA NUSANTARA JAKARTA   2021 DAFTAR ISI BAB 1 PENDAHULUAN…3  Latar Belakang…3  Bab II TAHAP PELAKSANAAN…5   BAB I PENDAHULUAN Latar Belakang Seiring dengan perkembangan waktu, jumlah penduduk di Indonesia terus mengalami peningkatan  yang mendorong terjadinya   peningkatan  jumlah kendaraan di Indonesia ,baik kendaraan mobil maupun motor. Sayangnya, ketersediaan dan fasilitas parkir di Indonesia masih jauh dari kata sempurna. Jumlah kendaraan yang terlalu banyak kerap membuat masyarakat kesulitan dalam mencari lokasi parkir yang masih kosong. Hal ini pun dapat terjadi dikarenakan sedikitnya ketersediaan lahan parkir , hingga sulitnya pengemudi untuk menemukan lahan parkir yang masih kosong. Tidak h...

Final Review Data Structure 2nd Semester

Final Review Frans/2301852096/CB01 Dosen: 1. Ferdinand Ariandy Luwinda/ D4522 2.Henry Chong/ D4460 Selama 1 semester yang penuh pandemi ini, berikut yang saya dapatkan dari mata kuliah Data Structure: 1.Linked List Linked list adalah sekumpulan elemen bertipe sama, yang mempunyai keterurutan tertentu, yang setiap elemennya terdiri dari dua bagian Linked list juga merupakan suatu cara untuk menyimpan data dengan struktur sehingga dapat secara otomatis menciptakan suatu tempat baru untuk menyimpan data yangdiperlukan. Struktur ini lebih dinamis karena banyaknya elemen dengan mudah ditambah atau dikurangi, berbeda dengan array yang ukurannya tetap. berikut gambaran kecil mengenai linked list. Linked list terbagi menjadi 2, a.Circular single linked list Circular Single Linked List adalah Linked List yang pointer nextnya menunjuk pada dirinya sendiri. Jika Single Linked List tersebut terdiri dari beberapa node, maka pointer next pada node terakhir akan menunjuk ke node terdepannya....

Review

Data Structure S'lama awal semester ini, berikut adalah rangkuman yang saya dapatkan, 1.Linked List Linked list adalah sekumpulan elemen bertipe sama, yang mempunyai keterurutan tertentu, yang setiap elemennya terdiri dari dua bagian Linked list juga merupakan suatu cara untuk menyimpan data dengan struktur sehingga dapat secara otomatis menciptakan suatu tempat baru untuk menyimpan data yangdiperlukan. Struktur ini lebih dinamis karena banyaknya elemen dengan mudah ditambah atau dikurangi, berbeda dengan array yang ukurannya tetap. berikut gambaran kecil mengenai linked list. Linked list terbagi menjadi 2, a.Circular single linked list Circular Single Linked List adalah Linked List yang pointer nextnya menunjuk pada dirinya sendiri. Jika Single Linked List tersebut terdiri dari beberapa node, maka pointer next pada node terakhir akan menunjuk ke node terdepannya. b.Doubly linked list Double Linked List adalah linked list dengan node yang memiliki data dan dua buah refe...