0% menganggap dokumen ini bermanfaat (0 suara)
269 tayangan31 halaman

Pertemuan-12 AVL Tree

Dokumen tersebut membahas tentang AVL Tree, yaitu sejenis Binary Search Tree yang self-balancing. AVL Tree memastikan bahwa perbedaan tinggi antara sub-tree kiri dan kanan pada setiap node tidak lebih dari satu, dengan melakukan rotasi single atau double pada saat insert atau delete untuk mempertahankan sifat balancing. Dokumen tersebut menjelaskan konsep, operasi, dan contoh rebalance AVL Tree melalui insert dan delete node.

Diunggah oleh

Ulfa Azizah
Hak Cipta
© © All Rights Reserved
Kami menangani hak cipta konten dengan serius. Jika Anda merasa konten ini milik Anda, ajukan klaim di sini.
Format Tersedia
Unduh sebagai PDF, TXT atau baca online di Scribd
0% menganggap dokumen ini bermanfaat (0 suara)
269 tayangan31 halaman

Pertemuan-12 AVL Tree

Dokumen tersebut membahas tentang AVL Tree, yaitu sejenis Binary Search Tree yang self-balancing. AVL Tree memastikan bahwa perbedaan tinggi antara sub-tree kiri dan kanan pada setiap node tidak lebih dari satu, dengan melakukan rotasi single atau double pada saat insert atau delete untuk mempertahankan sifat balancing. Dokumen tersebut menjelaskan konsep, operasi, dan contoh rebalance AVL Tree melalui insert dan delete node.

Diunggah oleh

Ulfa Azizah
Hak Cipta
© © All Rights Reserved
Kami menangani hak cipta konten dengan serius. Jika Anda merasa konten ini milik Anda, ajukan klaim di sini.
Format Tersedia
Unduh sebagai PDF, TXT atau baca online di Scribd
Anda di halaman 1/ 31

A V L Tree

Pertemuan Ke-12
Dwi Marlina, M.Kom
Outline
Motivasi
Review : Properties Of Binary Search Tree

Definisi dan Konsep AVL Tree

Operasi pada AVL Tree

Rebalance AVL Tree


Insertion
Deletion
Motivasi

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.

Jadi objek elemen harus comparable

<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,

AVL : Adelson – Velskii and Landis Tree


Penemu AVL yang Bernama: G.M. Adelson – Velskii and E.M.Landiss

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:

(a) AVL Tree (b) AVL Tree

(c) Bukan AVL Tree (d) Bukan AVL Tree


Status Node
Setiap node dalam AVL TREE diberikan simbol untuk mengetahui tentang statusnya
(lihat gambar dibawah ini), yaitu :

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

Ada 3 kondisi / kasus yaitu :

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

(a) Sebelum Insert 25 (a) Setelah Insert 25


Operasi Insert
2. Jika ada pivot point tetapi subtree akan ditambahkan node baru memiliki height yang lebih kecil,
maka bisa langsung di INSERT.

Insert 7

(a) Sebelum Insert 7 (a) Setelah Insert 7


Operasi Insert
3. Jika ada pivot point dan subtree yang akan ditambahkan node baru memiliki height yang lebih
besar, maka TREE harus di REGENERATE, supaya tetap menghasilkan AVL TREE.

Insert 28

AVL Bukan AVL


Cara Melakukan RE-GENERATE
Kondisi tidak balance 1. Single Rotation
2. Double Rotation
Single Rotation (case 1)
Single Rotation (case 4)
Keterbatasan Single Rotation
Single rotation tidak bisa digunakan untuk kasus 2 dan 3 (inside case)
Double Rotation
Langkah Double Rotation
Langkah Double Rotation
Langkah Double Rotation
Contoh: Single Rotation

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!

Berdasarkan prinsip AVL Tree, buatlah operasi:


a) Insert (10)
b) Insert (6)
c) Insert (46)
d) Insert (80)
e) Insert (82)
Referensi
Anita Sindar RMS, S.T.M.T.I. 2019. Struktur Data Dan Algoritma Dengan C++.
https://books.google.co.id/books?id=GP_ADwAAQBAJ.

Emy Setyaningsih. 2012. Struktur Data.

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.

Niklus Wirth, Algoritma dan Struktur Data, Andi Yogyakarta 1997

Rinaldi Munir, Algoritma dan Pemrograman dalam Bahasa Pascal dan C, Informatika 2012

https://www.youtube.com/watch?v=B3Sqisr3z0M (Andi Heryanto, M.T)

http://aren.cs.ui.ac.id/sda/resources/sda2010/12_avl.pdf

Anda mungkin juga menyukai