AVL Tree

AVL tree adalah sebuah Binary Search Tree yang bisa menyeimbangkan antara tinggibagian kiri dengan tinggi bagian kanan.

Contoh sebuah AVL Tree

Perbedaan tinggi subtree bagian kanan dan kiri adalah kurang dari sama dengan 1.

Contoh yang bukan AVL Tree


Perbedaan tinggi subtree 8 dan 18 lebih dari 1.

AVL Tree sangat berguna karena BST biasa yang bukan AVL Tree, membutuhkan waktu yang cukup lama untuk beroperasi.

Insertion
Proses insertion AVL Tree dan BST cukup mirip, hanya saja setelah diinsert, AVL Tree langsung menyeimbangkan subtree kiri dan kanan.
Contoh X adalah node yang akan diinsert,
  • Case 1 : node terdalam terletak pada subtree kiri dari anak kiri X (left-left)
  • Case 2 : node terdalam terletak pada subtree kanan dari anak kanan X (right-right)
  • Case 3 : node terdalam terletak pada subtree kanan dari anak kiri X (right-left)
  • Case 4 : node terdalam terletak pada subtree kiri dari anak kanan X (left-right
Case tersebut akan selesai menggunakan single rotation untuk case 1 dan 2, gunakan double rotation untuk case 3 dan 4.

Contoh left rotation
AVL Tree Left Rotation

Source:
https://www.freecodecamp.org/news/avl-tree-insertion-rotation-and-balance-factor/
https://www.geeksforgeeks.org/avl-tree-set-1-insertion/

Comments

Popular posts from this blog

Hashing table & Binary Tree

Laporan Akhir Mata Kuliah Human and Computer Interaction Aplikasi Predical

FINAL SUMMARY