Mata Kuliah Pemrograman :
Terdapat aturan dalam insertion dan deletion AVL Tree:
1. Left Left Case
2. Left Right Case
3. Right Right Case
4. Right Left Case
Penjelasan dapat dilihat pada ppt berikut.
2. Definition?
AVL Tree adalah Binary Search Tree dengan selisih tinggi cabang kiri dan cabang kanan
maksimal satu.
AVL Tree muncul untuk menyeimbangkan Binary Search Tree. Dengan AVL Tree, waktu
pencarian dan bentuk tree dapat dipersingkat dan disederhanakan.
3. SELF BALANCING TREE
Untuk menjaga tree tetap imbang, setelah penyisipan sebuah node dilakukan
pemeriksaan dari node baru ke root.
Node pertama yang memiliki |balance factor| > 1 harus diseimbangkan.
Proses penyeimbangan dilakukan dengan Single rotation atau Double rotation
Balance Factor = height(left subtree) - height(right
subtree)
5. AVL TREE
12
192
5
AVL Tree
Bukan AVL Tree
AVL Tree
Bukan AVL Tree
Karena bukan
BST
Karena memiliki ketinggian lebih dari satu
12
92
5
192
5
12
192
5
14
8. • Sisipkan node baru sebagai leaf
• Seimbangkan node pada path
Beberapa ketidakseimbangan, yaitu
1. Left left case
2. Right right case
3. Right left case
4. Left right case
• Tree seimbang
Algoritma Insertion AVL Tree
12
25
9 72
49
35
62
69
50
32
29
35
Case 1
Case 3
case 2
case 4
9. Case Solution Case Solution Case Solution
Pemecahan kasus ketidakseimbangan dilakukan dengan
• SINGLE ROTATION
Penyeimbangan tree dengan merotasi tree sebanyak satu rotasi pada posisi root.
Diterapkan pada kasus Left left case dan Right right case
• DOUBLE ROTATION
Penyeimbangan tree dengan merotasi tree sebanyak dua rotasi.
Diterapkan pada kasus Left right case dan Right left case
Case Solution Case Solution Case Solution
10. SINGLE ROTATION
v
1. Left Left Case
Setelah disisipkan z dan sub tree 4, terjadi ketidakseimbangan pada subtree kiri (y) dan child kiri (x )
Maka cukup melakukan right rotation
Ilustrasi
T4y
z
x
T2
T3
y
x z
↓T1
T1 T2 T4T3
11. example
Creat an AVL Tree by inserting 2 to the following values in the order given :
10
7 15
4 2313
12. • Masukkan 2 dalam tree
• Tree seimbang
Tahapan
10
4
2 7
15
13 23
157
10
4
2
13 23
↓
Hasil :
• Lakukan right rotation
13. SINGLE ROTATION
2. Right Right Case
Setelah disisipkan, terjadi ketidakseimbangan pada subtree kanan (y) dan child kanan (x )
Maka cukup melakukan left rotation
Ilustrasi
y
z
T1 T2
x
T3 T4
yT1
z
T2 x
T3 T4
↓
v
14. example
Creat an AVL Tree by inserting 15 and 25 to the following values in the order given :
30
28 40
33 54
15. • Tree seimbang
Tahapan
• Masukkan 15 dan 25 dalam tree
15
↓
Hasil :
30
28 40
33 54
25 30
25
15 28
40
33 54
• Lakukan left rotation
16. DOUBLE ROTATION
v
3. Right Left Case
Setelah dilakukan penyisipan, terjadi ketidakseimbangan pada subtree kanan (y) dan child kiri (x)
Maka dilakukan right rotation dan di lanjutkan left rotation
Ilustrasi
x
z y
↓
T1 T2 T4T3
↓
yT1
z
x
T3
T4
T2
xT1
z
T2
T4
y
T3
17. example
5 6742 1 1693 15
Creat an AVL Tree by inserting the following values in the order given :
18. • Tree seimbang
Tahapan
↓
5
2
1 4
7
6 9
3
15
16
5
2
1 4
7
6 9
3
16
15
• Buat tree
• Lakukan right rotation dilanjutkan left rotation
19. • Buat tree
• Lakukan right rotation dilanjutkan left rotation
• Tree seimbang
Tahapan
5
2
1 4
7
6 15
3 9 16
Hasil :
20. DOUBLE ROTATION
v
4. Left Right Case
Setelah dilakukan penyisipan, terjadi ketidakseimbangan pada subtree kiri (y) dan child kanan (x)
Maka dilakukan right rotation dan di lanjutkan left rotation
Ilustrasi
x
z y
↓
T1 T2 T4T3
T4y
z
T2 T3
xT1
T4x
z
y
T1 T2
T3
↓
21. example
Creat an AVL Tree by inserting 13 and 15 to the following values in the order given :
2418
20
129
25. • Hapus node
Terjadi tiga kasus dalam penghapusan sebuah node
1. Jika node memiliki balance factors 0
2. Jika node memiliki balance factors 1
3. Jika node memiliki balance factors -1
• dicek kembali keseimbangan tree
Jika tree belum seimbang maka harus diseimbangkan kembali. Memiliki kasus
ketidakseimbangan yang sama dengan insertion
• Tree seimbang
Algoritma Deletion AVL Tree
26. example
FIRST CASE
Case 1 : Balance factors 0, node dihapus adalah leaf, maka hanya perlu langsung menghapus.
Delete node 38 in the following tree :
50
27
20 30
65
70
28
55
34
38
10 68 82
27. • Hapus 38 dalam tree
Tahapan
50
25
20 30
65
70
28
55
3410 68 92
50
27
20 30
65
70
28
55
34
38
10 68 92
↓
Hasil :
• Tree seimbang
29. • Tree seimbang
Tahapan
50
25
20 30
65
70
28
55
3810 68 92
50
27
20 30
65
70
28
55
34
38
10 68 92
↓
Hasil :
• Hapus 34 dalam tree
• Posisi node yang dihapus digantikan child
yaitu 38
30. example
THIRD CASE
Delete node 50 in the following tree :
Balance Factors -1, node yang dihapus memiliki beberapa child maka pergantian secara rekursif
50
40
20 45
68
70
42
60
48
49
10
69 8225
31. Tahapan
↓
Hasil : 49
25
15 40
65
70
30
55
4510
68 9220
• Tree seimbang
50
40
20 45
68
70
42
60
49
10
69 8225 48
• Hapus 50 dalam tree
• Posisi node yang dihapus digantikan child yaitu 49
33. Tahapan
↓
• Hapus 60 dalam tree
• Posisi node yang dihapus digantikan child yaitu 55
• Lakukan single rotation case 2
50
25
20 40
55
60 65
30
70
45
42
10
50
25
20 40
65
70
30
55
45
42
10
34. • Hapus 60 dalam tree
• Posisi node yang dihapus digantikan child yaitu 55
• Lakukan single rotation case 2
• Cek perbedaan tinggi kembali
• Lakukan double rotation case 4
50
25
20 40
65
70
30
55
45
42
10
↓
50
40
25 45
65
70
42
55
20
10
30
35. 40
25
20 30
50
65
42
45
10 55 70
Hasil :
• Hapus 60 dalam tree
• Posisi node yang dihapus digantikan child yaitu 55
• Lakukan single rotation case 2
• Cek perbedaan tinggi kembali
• Lakukan double rotation case 4
• Tree seimbang