AVL Tree

AVL Tree

Nama saya Raymond Andilsim, dan pada blog ini saya akan menulis rangkuman tentang AVL Tree. AVL Tree adalah subtipe dari Binary Search Tree. Pohon AVL memiliki properti penyeimbangan mandiri dinamis selain semua properti yang digunakan oleh Binary Search Tree. AVL Tree adalah sebuah upgrade dari Binary Search Tree. Tambahan/Upgraden dari BST adalah :

BST memiliki aturan seperti :

  1. Setiap pohon memiliki root (di atas).
  2. Root memiliki nol, satu atau dua node anak.
  3. Setiap node memiliki nol, satu atau dua node anak, dan seterusnya.
  4. Setiap node memiliki hingga dua anak.
  5. Untuk setiap node, turunan/node kirinya lebih kecil dari node di atasnya, yang lebih kecil dari turunan kanan.



Dan di AVL Tree terdapat tambahan yaitu perbedaan antara kedalaman subtrees kanan dan kiri tidak boleh lebih dari satu. Untuk mengimplementasikan ini, implementasi AVL akan menyertakan algoritma untuk menyeimbangkan kembali pohon saat menambahkan elemen tambahan yaitu single rotation dan double rotation. Dengan proses seperti ini :

  1. Jika ada ketidakseimbangan pada anak kiri subtree kanan, maka kita akan melakukan rotasi kiri-kanan.
  2. Jika ada ketidakseimbangan pada anak kiri subtree kiri, maka kita akan melakukan rotasi kanan.
  3. Jika ada ketidakseimbangan pada anak kanan subtree kanan, maka kita akan melakukan rotasi kiri.
  4. Jika ada ketidakseimbangan pada anak kanan subtree kiri, maka kita akan melakukan rotasi kanan-kiri.

Contoh Single Rotation

Node 37 dan 40 tidak seimbang karena terdapat 45 di paling bawah kanan dan beda nodenya itu sudah 2, maka itu di rotate menjadi :



Contoh Double Rotation

Terjadi tidak keseimbangan karena ada 5 di paling bawah sebelah kiri dan sudah terjadi perbedaan 2 node, sehingga dilakukan rotasi pertama di 11 :


11 sudah terotasi dan 8 naik ke atas, tetapi masih belum seimbang, maka itu dilakukan lagi rotasi kedua di 3 dan 8 bisa naik lagi ke node atas : 


Tree sudah seimbang karena perbedaan nodneya sekarang hanya 1.


Sekian rangkuman AVL Tree dari saya, mohon maaf jika ada kesalahan.

Nama : Raymond Andilsim
NIM   : 2301906533



Comments

Popular posts from this blog

Semester 2 Review / Summary

Application Code