AVL Tree

AVL Tree adalah subtype dari BST yang dapat menyeimbangkan dirinya sendiri di mana perbedaan antara ketinggian subtree kiri dan kanan tidak boleh lebih dari satu untuk semua node.

AVL Insertion Process
Hampir sama dengan BST, setelah itu memnyeimbangkan AVL Tree dengan left atau right rotation.

  • Jika ada ketidakseimbangan pada anak kiri subtree kanan, maka lakukan left-right rotation.
  • Jika ada ketidakseimbangan pada anak kiri subtree kiri, maka lakukan right rotation.
  • Jika ada ketidakseimbangan pada anak kanan subtree kanan, maka lakukan left rotation.
  • Jika ada ketidakseimbangan pada anak kanan subtree kiri, maka lakukan right-left rotation.
AVL Tree memeriksa ketinggian subtree kiri dan kanan dan memastikan bahwa perbedaannya tidak lebih dari 1. Perbedaan ini disebut Balance Factor.

AVL Deletion Process
Ada 2 kasus yang biasanya terjadi saat operasi delete, yaitu :
  1. Jika node yang akan dihapus berada pada posisi leaf atau node tanpa anak, maka dapat langsung di hapus.
  2. Jika node yang akan dihapus memiliki anak, maka proses penghapusannya harus di cek kembali untuk menyeimbangkan BST dengan perbedaan tinggal maksimal 1.
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 da
    ri anak kanan T (left-right)


AVL Tree Rotations
di AVL Tree, setelah melakukan setiap operasi seperti insertion dan deletion, kita perlu memeriksa keseimbangan setiap simpul di Tree. Jika setiap node memenuhi kondisi faktor keseimbangan maka kita menyimpulkan operasi jika tidak kita harus membuatnya seimbang. Kami menggunakan operasi rotasi untuk membuat pohon seimbang setiap kali pohon menjadi tidak seimbang karena operasi apa pun.


Operasi rotasi digunakan untuk membuat pohon seimbang. Ada empat rotasi dan diklasifikasikan menjadi dua jenis:

Rotasi Kiri Tunggal (Rotasi LL)
Dalam Rotasi LL setiap node bergerak satu posisi ke kiri dari posisi saat ini.







Rotasi Kanan Tunggal (Rotasi RR)
Dalam RR Rotation setiap node bergerak satu posisi ke kanan dari posisi saat ini.







Rotasi Kanan Kiri (Rotasi LR)
Rotasi LR adalah kombinasi dari rotasi kiri tunggal diikuti oleh rotasi kanan tunggal. Dalam LR Rotation, pertama setiap node bergerak satu posisi ke kiri lalu satu posisi ke kanan dari posisi saat ini.

Rotasi Kiri Kanan (Rotasi RL)
Rotasi RL adalah kombinasi dari rotasi kanan tunggal diikuti oleh rotasi kiri tunggal. Dalam Rotasi RL, pertama setiap node bergerak satu posisi ke kanan lalu satu posisi ke kiri dari posisi saat ini.

Sumber :

Comments

Popular posts from this blog

Hashing Table & Binary Tree

Linked List

Binary Search Tree