Algoritma dan Struktur Data AVL Tree Outline AVL

  • Slides: 43
Download presentation
Algoritma dan Struktur Data AVL Tree

Algoritma dan Struktur Data AVL Tree

Outline AVL Tree Definisi Sifat Operasi 27 th Mar 2007

Outline AVL Tree Definisi Sifat Operasi 27 th Mar 2007

AVL Tree Binary Search Trees yang tidak imbang memiliki efisiensi yang buruk. Worst case:

AVL Tree Binary Search Trees yang tidak imbang memiliki efisiensi yang buruk. Worst case: O(n). AVL (Adelson-Velskii & Landis) tree adalah BST yang imbang. Setiap node di AVL tree memiliki balance factor bernilai -1, 0, atau 1. X H H-1 27 th Mar 2007 X H-2

AVL Tree 10 10 5 5 20 3 3 1 27 th Mar 2007

AVL Tree 10 10 5 5 20 3 3 1 27 th Mar 2007 3 20 43

AVL Tree 12 8 4 2 27 th Mar 2007 16 10 6 14

AVL Tree 12 8 4 2 27 th Mar 2007 16 10 6 14

Penyisipan node di AVL Tree Setelah insert 1 12 8 4 2 1 27

Penyisipan node di AVL Tree Setelah insert 1 12 8 4 2 1 27 th Mar 2007 16 10 6 14

Penambahan node di AVL Tree Untuk menjaga tree tetap imbang, setelah penyisipan sebuah node,

Penambahan node di AVL Tree Untuk menjaga tree tetap imbang, setelah penyisipan sebuah node, dilakukan pemeriksaan dari node baru → root. Node pertama yang memiliki |balance factor| > 1 diseimbangkan Proses penyeimbangan dilakukan dengan: Single rotation Double rotation 27 th Mar 2007

AVL Tree Balance Factor • Balance factor = HL – HR • Balance factor

AVL Tree Balance Factor • Balance factor = HL – HR • Balance factor node di AVL tree harus +1, 0, -1 • Identifier: – LH left high (+1) left subtree lebih panjang dari right subtree. – EH even high (0) subtree kiri dan kanan heightnya sama. – RH right high (-1) left subtree lebih pendek dari right subtree. 8

9

9

Menyeimbangkan AVL Tree • AVL trees diseimbangkan dengan merotasikan node ke kiri atau ke

Menyeimbangkan AVL Tree • AVL trees diseimbangkan dengan merotasikan node ke kiri atau ke kanan • Kasus penyeimbangan pada sebuah node: 1. Left of left: mengalami left high dan left subtreenya mengalami left high. 2. Right of right: mengalami right high dan right subtreenya mengalami right high. 3. Right of left: Mengalami left high dan left subtreenya mengalami right high. 4. Left of right: Mengalami right high dan right subtreenya mengalami left high. 10

HL =3 HL =1 11 HR =3

HL =3 HL =1 11 HR =3

(continued) HL =3 HL =1 12 HR =1 HR =3

(continued) HL =3 HL =1 12 HR =1 HR =3

Case 1: Left of Left 13

Case 1: Left of Left 13

Case 2: Right of Right 14

Case 2: Right of Right 14

Case 3: Right of Left 15

Case 3: Right of Left 15

Case 4: Left of Right 16

Case 4: Left of Right 16

Contoh Sisipkan 3 ke AVL tree 11 11 8 4 3 27 th Mar

Contoh Sisipkan 3 ke AVL tree 11 11 8 4 3 27 th Mar 2007 20 16 4 27 3 20 8 16 27

Contoh Penyisipan 5 ke AVL tree 11 11 8 4 16 5 27 th

Contoh Penyisipan 5 ke AVL tree 11 11 8 4 16 5 27 th Mar 2007 20 5 27 4 20 8 16 27

Latihan Sisipkan data berikut ke AVL tree secara berurutan: 10, 85, 15, 70, 20,

Latihan Sisipkan data berikut ke AVL tree secara berurutan: 10, 85, 15, 70, 20, 60, 30, 50, 65, 80, 90, 40, 5, 55 27 th Mar 2007

Menghapus node di AVL Tree Proses menghapus sebuah node di AVL tree hampir sama

Menghapus node di AVL Tree Proses menghapus sebuah node di AVL tree hampir sama dengan BST. Penghapusan sebuah node dapat menyebabkan tree tidak imbang Setelah menghapus sebuah node, lakukan pengecekan dari node yang dihapus → root. Gunakan single atau double rotation untuk menyeimbangkan node yang tidak imbang. Pencarian node yang imbalance diteruskan sampai root. 27 th Mar 2007

Menghapus node di AVL Tree Tahap penghapusan: Case 1: X merupakan leaf, hapus X

Menghapus node di AVL Tree Tahap penghapusan: Case 1: X merupakan leaf, hapus X Case 2: jika X memiliki 1 child, gunakan child tersebut untuk menggantikan X. Kemudian hapus X Case 3: Jika X memiliki 2 child, ganti nilai X dengan node terbesar pada left subtree atau node terkecil pada right subtree. Hapus node yang nilainya digunakan untuk mengganti X Tahap menyeimbangkan node yang balance factornya tidak -1, 0, 1, dilakukan dari node yang dihapus menuju root. 27 th Mar 2007

22

22

23

23

24

24

25

25

26

26

27

27

28

28

29

29

30

30

Delete 55 (case 1) 60 20 70 10 5 40 15 30 65 80

Delete 55 (case 1) 60 20 70 10 5 40 15 30 65 80 50 55 27 th Mar 2007 85 90

Delete 55 (case 1) 60 20 70 10 5 40 15 30 65 80

Delete 55 (case 1) 60 20 70 10 5 40 15 30 65 80 50 55 27 th Mar 2007 85 90

Delete 50 (case 2) 60 20 70 10 5 40 15 30 65 80

Delete 50 (case 2) 60 20 70 10 5 40 15 30 65 80 50 55 27 th Mar 2007 85 90

Delete 50 (case 2) 60 20 70 10 5 40 15 30 65 50

Delete 50 (case 2) 60 20 70 10 5 40 15 30 65 50 55 27 th Mar 2007 85 80 90

Delete 60 (case 3) 60 20 70 10 5 40 15 30 65 50

Delete 60 (case 3) 60 20 70 10 5 40 15 30 65 50 prev 55 27 th Mar 2007 85 80 90

Delete 60 (case 3) 55 20 70 10 5 27 th Mar 2007 40

Delete 60 (case 3) 55 20 70 10 5 27 th Mar 2007 40 15 30 65 50 85 80 90

Delete 55 (case 3) 55 20 10 5 27 th Mar 2007 40 15

Delete 55 (case 3) 55 20 10 5 27 th Mar 2007 40 15 70 prev 30 65 50 85 80 90

Delete 55 (case 3) 50 20 70 10 5 27 th Mar 2007 40

Delete 55 (case 3) 50 20 70 10 5 27 th Mar 2007 40 15 30 65 85 80 90

Delete 50 (case 3) 50 prev 20 10 5 27 th Mar 2007 40

Delete 50 (case 3) 50 prev 20 10 5 27 th Mar 2007 40 15 30 70 65 85 80 90

Delete 50 (case 3) 40 20 10 5 27 th Mar 2007 70 30

Delete 50 (case 3) 40 20 10 5 27 th Mar 2007 70 30 15 65 85 80 90

Delete 40 (case 3) 40 20 10 5 27 th Mar 2007 30 15

Delete 40 (case 3) 40 20 10 5 27 th Mar 2007 30 15 70 prev 65 85 80 90

Delete 40 : Rebalancing 30 20 10 5 27 th Mar 2007 Case ?

Delete 40 : Rebalancing 30 20 10 5 27 th Mar 2007 Case ? 15 70 65 85 80 90

Delete 40: after rebalancing 30 10 70 20 5 15 27 th Mar 2007

Delete 40: after rebalancing 30 10 70 20 5 15 27 th Mar 2007 65 85 80 90