Think Different Materi ASD (SISKOM) AVL TREE fix
Algoritma dan Struktur Data
AVL TREE
Review BST
Apakah Binary
Search Tree itu ?
Pemakaian tree structure dalam proses pencarian (search)
Sifat Binary Tree:
Pada sebuah node x,
– elemen yang berada di LEFT sub-tree selalu lebih KECIL
daripada x
– elemen yang berada di RIGHT sub-tree selalu lebih BESAR
Atau SAMA DENGAN daripada x
Binary Search Tree: proses pencarian (SEARCHING) berbasis
binary tree
Example of a binary search tree
LATIHAN BST
Coba
simulasikan penambahan pada
sebuah BST dengan urutan
penambahan:
– 14, 16, 10, 8, 12, 4, 9, 1
– 8, 12, 4, 9, 1, 14, 16, 10
Proses Pencarian (contoh SUKSES)
search(7)
75
7==7
Data yang dicari BERHASIL
ditemukan
13→5 →7
LATIHAN BST
14
10
8
4
1
16
12
9
8
4
1
12
9
14
10
16
Algoritma dan Struktur Data
AVL TREE
Tujuan
Memahami variant dari Binary Search Tree yang
balanced
Binary Search Tree yang tidak balance dapat
membuat seluruh operasi memiliki kompleksitas
running time O(n) pada kondisi worst case.
AVL Trees
Untuk
setiap node dalam tree, ketinggian
subtree di anak kiri dan subtree di anak
kanan hanya berbeda maksimum 1.
X
H
H-1
X
H-2
AVL Trees
10
10
5
5
20
3
3
1
2
1
3
20
43
AVL Trees
12
8
4
2
16
10
6
14
Insertion pada AVL Tree
Setelah
insert 1
12
8
4
2
1
16
10
6
14
Insertion pada AVL Tree
Untuk
menjamin kondisi balance pada AVL
tree, setelah penambahan sebuah node.
jalur dari node baru tersebut hingga root di
simpan dan di periksa kondisi balance
pada tiap node-nya.
Jika setelah penambahan, kondisi balance
tidak terpenuhi pada node tertentu, maka
lakukan salah satu rotasi berikut:
– Single rotation
– Double rotation
Kondisi tidak balance
HP=HQ=HR
k2
k1
k1
P
k2
Q
R
Sebuah penambahan
pada subtree:
P
Q
R
Sebuah penambahan pada
subtree:
– P (outside) - case 1
– Q (inside) - case 3
– Q (inside) - case 2
– R (outside) - case 4
Single Rotation (case 1)
HA=HB+1
HB=HC
k2
k1
k1
A
k2
B
C
A
B
C
Single Rotation (case 4)
HA=HB
HC=HB+1
k2
k1
k1
A
k2
B
C
A
B
C
Keterbatasan Single Rotation
Single
rotation tidak bisa digunakan
untuk kasus 2 dan 3 (inside case)
k2
k1
k1
P
k2
R
Q
HQ=HP+1
HP=HR
P
Q
R
Double Rotation: Langkah
k3
k3
k1
k2
k2
k1
D
D
A
B
C
HA=HB=HC=HD
A
B
C
Double Rotation: Langkah
k2
k1
A
k3
B
C
D
Double Rotation
k2
k3
k1
k1
k3
k2
D
A
B
C
HA=HB=HC=HD
A
B
C
D
Double Rotation
k2
k1
k1
k3
k3
k2
A
B
C
D
A
D
B
HA=HB=HC=HD
C
Contoh
penambahan
3 pada AVL tree
11
11
8
4
3
20
16
4
27
3
20
8
16
27
Contoh
penambahan
5 pada AVL tree
11
11
8
4
20
16
5
8
5
27
4
20
16
27
Contoh
Rotasi
ke 2
11
5
4
20
8
16
27
AVL Trees: Latihan
Coba simulasikan penambahan pada sebuah AVL dengan
urutan penambahan:
– 10, 85, 15, 70, 20, 60, 30, 50, 65, 80, 90, 40, 5, 55
http://www.strille.net/works/media_technology_projects/av
l-tree_2001/
Operasi: Remove pada AVL Tree
1. Menghapus node pada AVL Tree sama dengan
menghapus binary search tree procedure dengan
perbedaan pada penanganan kondisi tidak balance.
2. Penanganan kondisi tidak balance pada operasi
menghapus node AVL tree, serupa dengan pada operasi
penambahan. Mulai dari node yang diproses (dihapus)
periksa seluruh node pada jalur yang menuju root
(termasuk root) untuk menentukan node tidak balance
yang pertama
3. Terapkan single atau double rotation untuk
menyeimbangkan tree.
4. Bila Tree masih belum balance, ulangi lagi dari langkah
2.
Menghapus node X pada AVL Trees
Deletion:
– Kasus 1: jika X adalah leaf, delete X
– Kasus 2: jika X punya 1 child, X
digantikan oleh child tsb.
– Kasus 3: jika X punya 2 child, ganti X
secara rekursif dengan predecessor-nya
secara inorder
Rebalancing
Delete 55 (Kasus 1)
60
20
70
10
5
40
15
30
65
85
80
50
55
90
Delete 55 (Kasus 1)
60
20
70
10
5
40
15
30
65
85
80
50
55
90
Delete 50 (Kasus 2)
60
20
70
10
5
40
15
30
65
85
80
50
55
90
Delete 50 (Kasus 2)
60
20
70
10
5
40
15
30
65
50
55
85
80
90
Delete 60 (Kasus 3)
60
20
70
10
5
40
15
30
65
50
prev
55
85
80
90
Delete 60 (Kasus 3)
55
20
70
10
5
40
15
30
65
50
85
80
90
Delete 55 (Kasus 3)
55
20
10
5
40
15
70
prev
30
65
50
85
80
90
Delete 55 (Kasus 3)
50
20
70
10
5
40
15
30
65
85
80
90
Delete 50 (Kasus 3)
50
prev
20
10
5
40
15
30
70
65
85
80
90
Delete 50 (Kasus 3)
40
20
10
5
70
30
15
65
85
80
90
Delete 40 (Kasus 3)
40
20
10
5
30
15
70
prev
65
85
80
90
Delete 40 : Rebalancing
30
20
10 Kasus ?
5
15
70
65
85
80
90
Delete 40: setelah rebalancing
30
10
70
20
5
15
Single rotation is preferred!
65
85
80
90
AVL TREE
Review BST
Apakah Binary
Search Tree itu ?
Pemakaian tree structure dalam proses pencarian (search)
Sifat Binary Tree:
Pada sebuah node x,
– elemen yang berada di LEFT sub-tree selalu lebih KECIL
daripada x
– elemen yang berada di RIGHT sub-tree selalu lebih BESAR
Atau SAMA DENGAN daripada x
Binary Search Tree: proses pencarian (SEARCHING) berbasis
binary tree
Example of a binary search tree
LATIHAN BST
Coba
simulasikan penambahan pada
sebuah BST dengan urutan
penambahan:
– 14, 16, 10, 8, 12, 4, 9, 1
– 8, 12, 4, 9, 1, 14, 16, 10
Proses Pencarian (contoh SUKSES)
search(7)
75
7==7
Data yang dicari BERHASIL
ditemukan
13→5 →7
LATIHAN BST
14
10
8
4
1
16
12
9
8
4
1
12
9
14
10
16
Algoritma dan Struktur Data
AVL TREE
Tujuan
Memahami variant dari Binary Search Tree yang
balanced
Binary Search Tree yang tidak balance dapat
membuat seluruh operasi memiliki kompleksitas
running time O(n) pada kondisi worst case.
AVL Trees
Untuk
setiap node dalam tree, ketinggian
subtree di anak kiri dan subtree di anak
kanan hanya berbeda maksimum 1.
X
H
H-1
X
H-2
AVL Trees
10
10
5
5
20
3
3
1
2
1
3
20
43
AVL Trees
12
8
4
2
16
10
6
14
Insertion pada AVL Tree
Setelah
insert 1
12
8
4
2
1
16
10
6
14
Insertion pada AVL Tree
Untuk
menjamin kondisi balance pada AVL
tree, setelah penambahan sebuah node.
jalur dari node baru tersebut hingga root di
simpan dan di periksa kondisi balance
pada tiap node-nya.
Jika setelah penambahan, kondisi balance
tidak terpenuhi pada node tertentu, maka
lakukan salah satu rotasi berikut:
– Single rotation
– Double rotation
Kondisi tidak balance
HP=HQ=HR
k2
k1
k1
P
k2
Q
R
Sebuah penambahan
pada subtree:
P
Q
R
Sebuah penambahan pada
subtree:
– P (outside) - case 1
– Q (inside) - case 3
– Q (inside) - case 2
– R (outside) - case 4
Single Rotation (case 1)
HA=HB+1
HB=HC
k2
k1
k1
A
k2
B
C
A
B
C
Single Rotation (case 4)
HA=HB
HC=HB+1
k2
k1
k1
A
k2
B
C
A
B
C
Keterbatasan Single Rotation
Single
rotation tidak bisa digunakan
untuk kasus 2 dan 3 (inside case)
k2
k1
k1
P
k2
R
Q
HQ=HP+1
HP=HR
P
Q
R
Double Rotation: Langkah
k3
k3
k1
k2
k2
k1
D
D
A
B
C
HA=HB=HC=HD
A
B
C
Double Rotation: Langkah
k2
k1
A
k3
B
C
D
Double Rotation
k2
k3
k1
k1
k3
k2
D
A
B
C
HA=HB=HC=HD
A
B
C
D
Double Rotation
k2
k1
k1
k3
k3
k2
A
B
C
D
A
D
B
HA=HB=HC=HD
C
Contoh
penambahan
3 pada AVL tree
11
11
8
4
3
20
16
4
27
3
20
8
16
27
Contoh
penambahan
5 pada AVL tree
11
11
8
4
20
16
5
8
5
27
4
20
16
27
Contoh
Rotasi
ke 2
11
5
4
20
8
16
27
AVL Trees: Latihan
Coba simulasikan penambahan pada sebuah AVL dengan
urutan penambahan:
– 10, 85, 15, 70, 20, 60, 30, 50, 65, 80, 90, 40, 5, 55
http://www.strille.net/works/media_technology_projects/av
l-tree_2001/
Operasi: Remove pada AVL Tree
1. Menghapus node pada AVL Tree sama dengan
menghapus binary search tree procedure dengan
perbedaan pada penanganan kondisi tidak balance.
2. Penanganan kondisi tidak balance pada operasi
menghapus node AVL tree, serupa dengan pada operasi
penambahan. Mulai dari node yang diproses (dihapus)
periksa seluruh node pada jalur yang menuju root
(termasuk root) untuk menentukan node tidak balance
yang pertama
3. Terapkan single atau double rotation untuk
menyeimbangkan tree.
4. Bila Tree masih belum balance, ulangi lagi dari langkah
2.
Menghapus node X pada AVL Trees
Deletion:
– Kasus 1: jika X adalah leaf, delete X
– Kasus 2: jika X punya 1 child, X
digantikan oleh child tsb.
– Kasus 3: jika X punya 2 child, ganti X
secara rekursif dengan predecessor-nya
secara inorder
Rebalancing
Delete 55 (Kasus 1)
60
20
70
10
5
40
15
30
65
85
80
50
55
90
Delete 55 (Kasus 1)
60
20
70
10
5
40
15
30
65
85
80
50
55
90
Delete 50 (Kasus 2)
60
20
70
10
5
40
15
30
65
85
80
50
55
90
Delete 50 (Kasus 2)
60
20
70
10
5
40
15
30
65
50
55
85
80
90
Delete 60 (Kasus 3)
60
20
70
10
5
40
15
30
65
50
prev
55
85
80
90
Delete 60 (Kasus 3)
55
20
70
10
5
40
15
30
65
50
85
80
90
Delete 55 (Kasus 3)
55
20
10
5
40
15
70
prev
30
65
50
85
80
90
Delete 55 (Kasus 3)
50
20
70
10
5
40
15
30
65
85
80
90
Delete 50 (Kasus 3)
50
prev
20
10
5
40
15
30
70
65
85
80
90
Delete 50 (Kasus 3)
40
20
10
5
70
30
15
65
85
80
90
Delete 40 (Kasus 3)
40
20
10
5
30
15
70
prev
65
85
80
90
Delete 40 : Rebalancing
30
20
10 Kasus ?
5
15
70
65
85
80
90
Delete 40: setelah rebalancing
30
10
70
20
5
15
Single rotation is preferred!
65
85
80
90