Skip to main content

AVL Tree

AVL Tree


AVL Tree yang dinamakan dari pembuatnya yaitu Adelson-Velsky and Landis’ tree, adalah self-balancing binary search tree. Dalam AVL Tree, ketinggian anak anak di setiap simpul berbeda paling banyak 1. Kapan saja jika perbedaan ketinggian menjadi lebih besar dari 1 maka penyeimbangan pohon dilakukan untuk memulihkan propertinya.

dalam AVL Tree ada 2 basic operation yaitu Right Rotation and Left Rotation.


Cara Rotasi ini berfungsi untuk menyeimbangkan Tree:

  1. Biarkan  node A menjadi node baru yang di add ke tree.
  2. Setelah node A di add, dari node A ke root untuk menemukan node yang tidak seimbang.
  3. apabila ketemu node yang tidak seimbang maka akan diseimbangkan dan terus mengecek apabila masih ada node pada tree yang tidak seimbang.

Jka Anda telah menemukan simpul z yang tidak seimbang, Node y adalah anak dari z dan x menjadi cucu dari z maka akan ada empat kemungkinan, yaitu 

  • Case Left - Left: - x adalah left child dari node y dan y adalah left child dari node z.


  • Case Left - Right: - x adalah right child dari node y dan y adalah left child dari node z.


  • Case Right - Left: - x adalah left child dari node y dan y adalah right child dari node z.


  • Kasus Right - Right: - x adalah right child dari node y dan y adalah right child dari node z.



Operasi Insertion:

  • Insert node baru menggunakan rekursi agar saat melacak kembali Anda akan men-check semua parent node untuk memeriksa apakah mereka masih seimbang atau tidak.
  • Setiap node memiliki height dengan nilai default sebagai 1.
  • Ketika node baru ditambahkan, height dari parent node akan bertambah 1.
  • Jadi seperti yang disebutkan pada langkah 1, setiap height dari ancestors nya akan diperbarui saat kembali melacak dari atas sampai ke root.
  • Di setiap node, Balance Factor juga akan diperiksa. faktor keseimbangan = (height left tree - height right tree).
  • Jika Balance Factor = 1 berarti tree sudah seimbang pada node tersebut.
  • Jika Balance Factor > 1 berarti tree tidak seimbang pada node tersebut, height left tree lebih tinggi daripada height right tree sehingga itu berarti kita perlu rotasi. (Baik Left - Left atau Left - Right).
  • Jika node saat ini yang kita periksa adalah X dan Jika node baru kurang dari X.left maka itu akan menjadi case Left - Left, dan jika node baru lebih besar dari X.left maka itu akan menjadi Case Left - Right. 
  • Jika Balance Factor < -1 berarti tree tidak seimbang pada node tersebut, height right tree lebih tinggi dari height left tree sehingga itu berarti kita perlu rotasi. (Baik Case Right - Right atau RIght - Left)
  • Katakanlah node saat ini yang kita periksa adalah X dan Jika node baru kurang dari X.right maka itu akan menjadi Case Right - Right, dan jika node baru lebih besar dari X.right maka itu akan menjadi Case Right - Left. 




Comments

Popular posts from this blog

Binary Search Tree

Binary Search Tree Binary Search Tree (BST) adalah sebuah konsep penyimpanan data, dimana data disimpan dalam sebuah tree yang memungkinkan untuk melakukan searching dan sorting secara lebih cepat dan insert dan delete yang lebih mudah. Dalam Binary Search Tree terdapat maksimal 2 anak node dalam setiap nodenya, dan Binary Search Tree memiliki aturan : Left Subtree dari X, berisi elemen yang lebih kecil dari elemen yang disimpan di dalam X. Right Subtree dari X, berisi elemen yang lebih besar dari elemen yang disimpan di dalam X. Binary Search Tree memiliki beberapa operasi dasar seperti berikut : 1. Find (x) Find adalah operasi untuk mencari elemen X yang diinginkan. Searching dimulai dari root (akarnya), apabila root mengandung X didalamnya maka search dihentikan. apabila X lebih kecil dari root, maka search akan berlanjut secara rekursif ke Left Subtree. apabila X lebih besar dari root, maka search akan berlanjut secara rekursif ke Right Subtree. 2. In...

Final Review

Halo, Selamat datang di blog aku, hari ini kita akan mengulang pembahasan beberapa materi tentang data structure, yang pertama adalah Linked List Linked List Linked List adalah kumpulan elemen data, yang setiap data nya menunjuk ke data berikutnya, dan di diakhiri oleh null. Tipe - tipe linked list yaitu : Simple Linked List - hanya bisa bergerak maju. Doubly Linked List - bisa bergerak maju dan mundur. Circular Linked List - data terakhir bisa bergerak maju ke data pertama, dan data pertama                                              bergerak mundur ke data terakhir. Doubly Linked List Doubly Linked List hampir mirip dengan simple linked list, bedanya dia memiliki 2 pointer, yaitu next dan previous. next - bergerak maju ke data selanjutnya previous - bergerak mundur ke data sebelumnya Circular Single Linked List ...

Data Structure Summary

Hallo Guys hari kita akan merangkum apa yang sudah kita pelajari dari awal semester. materi yang akan kita bahas adalah Linked List Doubly Linked List Circular Single Linked List Circular Doubly Linked List Stack & Queue Hashing and Binary Tree Binary Search Tree 1. Linked List Linked List adalah kumpulan elemen data, yang setiap data nya menunjuk ke data berikutnya, dan di diakhiri oleh null. Tipe - tipe linked list yaitu : Simple Linked List - hanya bisa bergerak maju. Doubly Linked List - bisa bergerak maju dan mundur. Circular Linked List - data terakhir bisa bergerak maju ke data pertama, dan data pertama                                              bergerak mundur ke data terakhir. 2. Doubly Linked List Doubly Linked List hampir mirip dengan simple linked list, bedanya dia memiliki 2 pointer, yaitu next dan previous. ...