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