Pertemuan-12 AVL Tree
Pertemuan-12 AVL Tree
Pertemuan Ke-12
Dwi Marlina, M.Kom
Outline
Motivasi
Review : Properties Of Binary Search Tree
AVL Tree (Adelson-Velskii and Landis) pada dasarnya sama seperti BST
(Binary Search Tree), tetapi yang membedakan pada operasi self-
balancing-nya.
Dengan definisi untuk setiap node pada tree, height child kiri dan
kanannya hanya boleh memiliki maximum selisih satu (di base node /
implisit NULL node mempunyai height -1).
Binary Search Tree yang tidak balance dapat membuat seluruh operasi
memiliki kompleksitas running time O(n) pada kondisi worst case.
Review : Properties Of Binary Search Tree
Untuk Setiap node X pada tree, nilai elemen pada subtree sebelah kiri
selalu lebih kecil dari elemen node X dan nilai elemen pada subtree sebelah
kanan selalu lebih besar dari elemen node X.
<X >X
Definisi AVL
BST sudah dapat mengatasi kelemahan pada BINARY TREE dengan cara
mengurutkan / sort node yang di insert, di update dan di delete,
Masih terdapat kendala yang dihadapi BST, yaitu masih ada kemungkinan
terbentuk SKEWED BINARY TREE (TREE MIRING) yang mempunyai PERBEDAAN
HEIGHT (HEIGHT BALANCED) antara subtree kiri dengan subtree kanan.
AVL (Adelson Velskii and Landis) tree mengatasi hal ini dengan cara membatas
HEIGHT BALANCED maksimum 1.
AVL TREE dapat didefinisikan sebagai BST yang mempunyai ketentuan bahwa
“Maksimum perbedaan Height antara subtree kiri dan subtree kanan adalah 1”.
AVL TREE juga sering disebut dengan HEIGHT BALANCED 1-TREE.
AVL Tree
Untuk setiap node dalam tree, ketinggian subtree di anak kiri dan subtree di anak
kanan hanya berbeda maksimum 1.
Bukan AVL Tree
Gambar dibawah ini memperlihatkan BST setelah dilakukan operasi INSERT sebagai berikut :
+1, +2, +3,…, +n
Bila dilakukan pencarian terhadap node n diatas, maka pencarian sama seperti dilakukan
pada BST, yaitu pencarian menjadi sekuensi, yang memakan waktu lama, hal ini tidak
mungkin terjadi pada AVL TREE karena perbedaan Height dibatasi maksimal hanya 1.
Contoh AVL TREE dan bukan AVL TREE:
Node diberi simbol ( - ) dan disebut Tall Left bila subtree kiri lebih panjang dari subtree
kanan
Node diberi simbol ( + ) dan disebut Tall Right bila subtree kanan lebih panjang dari
subtree kiri
Node diberi simbol ( 0 ) dan disebut Balance bila subtree kiri dan kanan mempunyai
height yang sama
Contoh AVL Tree
-
-
-
0 0
0
0 0
Insertion pada AVL Tree
-
Insert 1 12
-
-
8 16
- 0 0
4 10 14
- 0
2 6
0
1
Insertion pada AVL Tree
Untuk menjamin kondisi balance pada AVL Tree setelah penambahan sebuah node, jalur dari
node baru tersebut hingga root disimpan dan diperiksa kondisi balance pada tiap node-nya.
Jika setelah penambahan, kondisi balance tidak terpenuhi pada node tersebut, maka lakukan
salah satu rotasi berikut:
❑ Single Rotation
❑ Double Rotation
Operasi Insert
Agar AVL TREE dapat tetap mempertahankan HEIGHTBALANCED 1 - TREE maka setiap kali pelaksanaan
operasi INSERT, jika diperlukan maka harus dilakukan ROTASI. Operasi INSERT dalam AVL TREE
1. Tidak ada pivot point dan setiap node adalah Balance, maka bisa langsung diinsert sama seperti pada
BST (tanpa perlu di REGENERATE)
+
Insert 25
0
0 +
0 0
0
Insert 7
Insert 28
AVL Tree
Contoh Single Rotation
Insert 3
0 0
0 0 0 0
Contoh Double Rotation
Insert 5
00
00 00
00 00 00 00
Contoh
Insert 5 -
0 0 0
0 0
Contoh
-
Insert 25
0 0 0
0 0
Tugas
1. Diketahui struktur Binary Search Tree seperti 2.- Buatlah BST pada sebuah AVL Tree dengan
dibawah ini: urutan penambahan (insert node): 15, 90, 20,
75, 25, 65, 34, 52, 70, 85, 95, 46, 10, 60!
Heri Sismoro, Struktur Data Pemrograman Dengan Pascal, Andi Offset 2004
Insap Santosa, Struktur Data Menggunakan Turbo Pascal 6.0, Andi Offset 2004
Lafore, Robert. 2002. Science Data Structures and Algorithms in Java (2nd Edition).
http://www.amazon.com/Data-Structures-Algorithms-Java-2nd/dp/0672324539.
Rinaldi Munir, Algoritma dan Pemrograman dalam Bahasa Pascal dan C, Informatika 2012
http://aren.cs.ui.ac.id/sda/resources/sda2010/12_avl.pdf