if184982 pengantar logika dan pemrograman pertemuan ke-12 · 2018/2019(1) - if184982 pengantar...

36
IF184982 Pengantar Logika dan Pemrograman Pertemuan ke - 12 Misbakhul Munir IRFAN SUBAKTI 司馬伊凡 Мисбакхул Мунир Ирфан Субакти

Upload: tranhuong

Post on 17-Mar-2019

227 views

Category:

Documents


5 download

TRANSCRIPT

Page 1: IF184982 Pengantar Logika dan Pemrograman Pertemuan ke-12 · 2018/2019(1) - IF184982 Pengantar Logika dan Pemrograman - MM Irfan Subakti 25 y x n i x y P 1 P 2 P 3 P 1 P 2 P 3. AVL:

IF184982Pengantar Logika dan Pemrograman

Pertemuan ke-12Misbakhul Munir IRFAN SUBAKTI

司馬伊凡Мисбакхул Мунир Ирфан Субакти

Page 2: IF184982 Pengantar Logika dan Pemrograman Pertemuan ke-12 · 2018/2019(1) - IF184982 Pengantar Logika dan Pemrograman - MM Irfan Subakti 25 y x n i x y P 1 P 2 P 3 P 1 P 2 P 3. AVL:

Binary Search Tree – Pohon Pencarian Biner

• Binary Search Tree (BST):

• Struktur data pohon biner berbasis simpul (node-based binary tree):• Cabang pohon kiri dari suatu simpul berisi simpul-simpul dengan nilai yang lebih kecil

dari nilai simpul tersebut

• Cabang pohon kanan dari suatu simpul berisi simpul-simpul dengan nilai yang lebih besardari nilai simpul tersebut

• Cabang pohon kiri dan cabang pohon kanan juga harus merupakan pohon pencarianbiner

• Tidak boleh ada simpul yang memiliki nilai yang sama

2018/2019(1) - IF184982 Pengantar Logika dan Pemrograman -MM Irfan Subakti

2

50

30 70

20 40 60 80

Page 3: IF184982 Pengantar Logika dan Pemrograman Pertemuan ke-12 · 2018/2019(1) - IF184982 Pengantar Logika dan Pemrograman - MM Irfan Subakti 25 y x n i x y P 1 P 2 P 3 P 1 P 2 P 3. AVL:

Pohon AVL

• Pohon AVL = AVL Trees

• AVL = Adelson-Velsky and Landis• Jenis pohon pencarian biner (BST, Binary Search Tree) yang bisa menyeimbangkan diri sendiri

• Setiap simpul (node), cabang kiri dan cabang kanannya mempunyai perbedaan tinggi paling banyak 1

• Penyisipan (insertion)/penghapusan (delete) dalam AVL dimungkinkan, secara umum, merusakkeseimbangan properti/sifat keseimbangan-tinggi di atas→ perlu dilakukan rotasi untukmenyeimbangkan kembali pohon dan mendapatkan kembali sifat keseimbangan-tingginya

• Kebanyakan operasi di BST, yaitu: cari, maks, min, sisipkan, hapus, dll.; memerlukan waktu O(t) di mana t adalah tinggi dari BST → bisa lebih cepat menjadi O(n) untuk pohon biner yang miring (skewed binary tree), dengan n adalah jumlah dari simpul (node)

• Jika tinggi dari pohon bisa dijaga selalu O(log n) setelah penyisipan dan penghapusan→ batasatas bisa dijaga pada O(log n) untuk semua operasi tadi, dengan n adalah jumlah dari simpul

• Tinggi dari Pohon AVL adalah selalu O(log n) → batas atas semua operasi adalah O(log n)

2018/2019(1) - IF184982 Pengantar Logika dan Pemrograman -MM Irfan Subakti

3

Page 4: IF184982 Pengantar Logika dan Pemrograman Pertemuan ke-12 · 2018/2019(1) - IF184982 Pengantar Logika dan Pemrograman - MM Irfan Subakti 25 y x n i x y P 1 P 2 P 3 P 1 P 2 P 3. AVL:

Pohon AVL & Bukan Pohon AVL

13

9 19

6 12

5

18

Pohon AVL

2018/2019(1) - IF184982 Pengantar Logika dan Pemrograman -MM Irfan Subakti

4

13

9 19

6 12

5

18

Bukan Pohon AVL

8

3

Page 5: IF184982 Pengantar Logika dan Pemrograman Pertemuan ke-12 · 2018/2019(1) - IF184982 Pengantar Logika dan Pemrograman - MM Irfan Subakti 25 y x n i x y P 1 P 2 P 3 P 1 P 2 P 3. AVL:

Penyisipan pada BST

• Penyisipan suatu elemen (nilai) baru dalam standar BST adalah sbb:

• Elemen baru selalu disisipkan pada simpul ujung pohon (simpul daun)

• Pencarian dari simpul yang akan disisipi dimulai dari akar pohon teratassampai ditemukan sebuah simpul daun

• Sekali simpul daun ditemukan, maka simpul baru akan ditambahkan sebagaianak dari simpul daun

• Properti/sifat dari BST:• elemen(kiri) < elemen(akar) < elemen(kanan)

2018/2019(1) - IF184982 Pengantar Logika dan Pemrograman -MM Irfan Subakti

5

100

20 120

10 30

Sisipkan 50

100

20 120

10 30

50

Page 6: IF184982 Pengantar Logika dan Pemrograman Pertemuan ke-12 · 2018/2019(1) - IF184982 Pengantar Logika dan Pemrograman - MM Irfan Subakti 25 y x n i x y P 1 P 2 P 3 P 1 P 2 P 3. AVL:

Penyisipan pada AVL

• Untuk menjaga agar pohon selalu dalam kondisi AVL setelah penyisipan, penyisipan standar BST di atas harus dimodifikasi untuk mendapatkankeseimbangan kembali.

• 2 operasi dasar untuk menyeimbangkan kembali BST tanpa melanggarproperti/sifat dari BST (elemen(kiri) < elemen(akar) < elemen(kanan):

• Rotasi kiri

• Rotasi kanan

2018/2019(1) - IF184982 Pengantar Logika dan Pemrograman -MM Irfan Subakti

6

Page 7: IF184982 Pengantar Logika dan Pemrograman Pertemuan ke-12 · 2018/2019(1) - IF184982 Pengantar Logika dan Pemrograman - MM Irfan Subakti 25 y x n i x y P 1 P 2 P 3 P 1 P 2 P 3. AVL:

Rotasi Kiri dan Rotasi Kanan

• P1, P2 dan P3 adalah cabang dari pohon dengan akar y (sisi kiri) dan akar x (sisikanan)

• Elemen-elemen dari pohon-pohon di atas mengikuti aturan:elemen-elemen(P1) < elemen(x) < elemen-elemen(P2) < elemen(y) < elemen-elemen(P3)

• Sehingga tetap memenuhi syarat properti/sifat BST

2018/2019(1) - IF184982 Pengantar Logika dan Pemrograman -MM Irfan Subakti

7

y

x Rotasi Kanan

Rotasi Kiri

x

y

P1 P2

P3 P1

P2 P3

Page 8: IF184982 Pengantar Logika dan Pemrograman Pertemuan ke-12 · 2018/2019(1) - IF184982 Pengantar Logika dan Pemrograman - MM Irfan Subakti 25 y x n i x y P 1 P 2 P 3 P 1 P 2 P 3. AVL:

AVL: Penyisipan

Simpul yang akan disisipkan adalah s.1. Lakukan penyisipan standar BST untuk s.2. Dimulai dari s, bergeraklah ke atas dan temukan simpul pertama yang tidak

seimbang. Diasumsikan z adalah simpul pertama yang tidak seimbang, y adalah anak dari z yang datang melalui jalur dari s to z, dan x adalah cucudari z yang datang melalui jalur dari s to z.

3. Seimbangkan kembali pohon dengan melakukan rotasi yang diperlukanpada cabang pohon yang berakar di z. Terdapat 4 kemungkinan kasus, karena x, y dan z dapat diatur dalam 4 posisi, yaitu:a) y adalah cabang kiri dari z dan x adalah cabang kiri dari y (Kasus Kiri-Kiri)b) y adalah cabang kiri dari z dan x adalah cabang kanan dari y (Kasus Kiri-Kanan)c) y adalah cabang kanan dari z dan x adalah cabang kanan dari y (Kasus Kanan-

Kanan)d) y adalah cabang kanan dari z dan x adalah cabang kiri dari y (Kasus Kanan-Kiri)

2018/2019(1) - IF184982 Pengantar Logika dan Pemrograman -MM Irfan Subakti

8

Page 9: IF184982 Pengantar Logika dan Pemrograman Pertemuan ke-12 · 2018/2019(1) - IF184982 Pengantar Logika dan Pemrograman - MM Irfan Subakti 25 y x n i x y P 1 P 2 P 3 P 1 P 2 P 3. AVL:

Penyisipan: Kasus Kiri-Kiri

P1, P2, P3 dan P4 adalah cabang pohon

2018/2019(1) - IF184982 Pengantar Logika dan Pemrograman -MM Irfan Subakti

9

z

y

x

Kasus Kiri-Kiri

Rotasi Kanan (z)

y

x z

P1 P2

P3

P4

P1 P2 P3 P4

Page 10: IF184982 Pengantar Logika dan Pemrograman Pertemuan ke-12 · 2018/2019(1) - IF184982 Pengantar Logika dan Pemrograman - MM Irfan Subakti 25 y x n i x y P 1 P 2 P 3 P 1 P 2 P 3. AVL:

Penyisipan: Kasus Kiri-Kanan

P1, P2, P3 dan P4 adalah cabang pohon

2018/2019(1) - IF184982 Pengantar Logika dan Pemrograman -MM Irfan Subakti

10

z

y

x

Kasus Kiri-Kanan

Rotasi Kiri (y)

z

x

y Rotasi Kanan (z)

x

y z

P1

P2 P3

P4

P1 P2

P3

P4

P4P3P2P1

Page 11: IF184982 Pengantar Logika dan Pemrograman Pertemuan ke-12 · 2018/2019(1) - IF184982 Pengantar Logika dan Pemrograman - MM Irfan Subakti 25 y x n i x y P 1 P 2 P 3 P 1 P 2 P 3. AVL:

Penyisipan: Kasus Kanan-Kanan

P1, P2, P3 dan P4 adalah cabang pohon

2018/2019(1) - IF184982 Pengantar Logika dan Pemrograman -MM Irfan Subakti

11

z

Kasus Kanan-Kanan

Rotasi Kiri (z)

y

z x

P2

P3

P1 P2 P3 P4

P1

P4

y

x

Page 12: IF184982 Pengantar Logika dan Pemrograman Pertemuan ke-12 · 2018/2019(1) - IF184982 Pengantar Logika dan Pemrograman - MM Irfan Subakti 25 y x n i x y P 1 P 2 P 3 P 1 P 2 P 3. AVL:

Penyisipan: Kasus Kanan-Kiri

P1, P2, P3 dan P4 adalah cabang pohon

2018/2019(1) - IF184982 Pengantar Logika dan Pemrograman -MM Irfan Subakti

12

z

Kasus Kanan-Kiri

Rotasi Kanan (y)

P2 P3

P1

P4

y

x

z

Rotasi Kiri (z)

x

z y

P2

P3

P1 P2 P3 P4

P4

x

y

P1

Page 13: IF184982 Pengantar Logika dan Pemrograman Pertemuan ke-12 · 2018/2019(1) - IF184982 Pengantar Logika dan Pemrograman - MM Irfan Subakti 25 y x n i x y P 1 P 2 P 3 P 1 P 2 P 3. AVL:

Penyisipan: Contoh

2018/2019(1) - IF184982 Pengantar Logika dan Pemrograman -MM Irfan Subakti

13

Page 14: IF184982 Pengantar Logika dan Pemrograman Pertemuan ke-12 · 2018/2019(1) - IF184982 Pengantar Logika dan Pemrograman - MM Irfan Subakti 25 y x n i x y P 1 P 2 P 3 P 1 P 2 P 3. AVL:

Penyisipan: Contoh (lanjutan)

2018/2019(1) - IF184982 Pengantar Logika dan Pemrograman -MM Irfan Subakti

14

Page 15: IF184982 Pengantar Logika dan Pemrograman Pertemuan ke-12 · 2018/2019(1) - IF184982 Pengantar Logika dan Pemrograman - MM Irfan Subakti 25 y x n i x y P 1 P 2 P 3 P 1 P 2 P 3. AVL:

Penyisipan: Contoh (lanjutan)

2018/2019(1) - IF184982 Pengantar Logika dan Pemrograman -MM Irfan Subakti

15

Page 16: IF184982 Pengantar Logika dan Pemrograman Pertemuan ke-12 · 2018/2019(1) - IF184982 Pengantar Logika dan Pemrograman - MM Irfan Subakti 25 y x n i x y P 1 P 2 P 3 P 1 P 2 P 3. AVL:

Penyisipan: Contoh (lanjutan)

2018/2019(1) - IF184982 Pengantar Logika dan Pemrograman -MM Irfan Subakti

16

Page 17: IF184982 Pengantar Logika dan Pemrograman Pertemuan ke-12 · 2018/2019(1) - IF184982 Pengantar Logika dan Pemrograman - MM Irfan Subakti 25 y x n i x y P 1 P 2 P 3 P 1 P 2 P 3. AVL:

Penyisipan: Contoh (lanjutan)

2018/2019(1) - IF184982 Pengantar Logika dan Pemrograman -MM Irfan Subakti

17

Page 18: IF184982 Pengantar Logika dan Pemrograman Pertemuan ke-12 · 2018/2019(1) - IF184982 Pengantar Logika dan Pemrograman - MM Irfan Subakti 25 y x n i x y P 1 P 2 P 3 P 1 P 2 P 3. AVL:

Penyisipan: Implementasi

1. Lakukan penyisipan standar BST2. Simpul saat ini haruslah salah satu moyang/leluhur (ancestors) dari simpul

baru yang disisipkan. Update tinggi dari simpul saat ini.3. Dapatkan faktor keseimbangan (tinggi cabang pohon kiri – tinggi cabang

pohon kanan) dari simpul saat ini.4. Jika faktor keseimbangan lebih dari 1, maka simpul saat ini tidak seimbang

dan kita berada pada kasus Kiri-Kiri atau Kiri-Kanan. Untuk mengecekapakah ini kasus Kiri-Kiri atau tidak, bandingkan elemen (nilai) baru yang disisipkan dengan elemen (nilai) pada akar cabang pohon kiri

5. Jika faktor keseimbangan kurang dari -1, maka simpul saat ini tidakseimbang dan kita berada pada kasus Kanan-Kanan atau Kanan-Kiri. Untukmengecek apakah ini kasus Kanan-Kanan atau tidak, bandingkan elemen(nilai) baru yang disisipkan dengan elemen (nilai) pada akar cabang pohonkanan

2018/2019(1) - IF184982 Pengantar Logika dan Pemrograman -MM Irfan Subakti

18

Page 19: IF184982 Pengantar Logika dan Pemrograman Pertemuan ke-12 · 2018/2019(1) - IF184982 Pengantar Logika dan Pemrograman - MM Irfan Subakti 25 y x n i x y P 1 P 2 P 3 P 1 P 2 P 3. AVL:

Penghapusan pada BST

3 kemungkinan kasus pada penghapusan suatu elemen (nilai) dalam standar BST adalah:

1. Simpul yang akan dihapus adalah simpul daun (simpul ujung pohon) → tinggalhapus saja simpul tersebut dari pohon

2018/2019(1) - IF184982 Pengantar Logika dan Pemrograman -MM Irfan Subakti

19

50

30 70

20 40 60 80

Hapus(20)

50

30 70

40 60 80

Page 20: IF184982 Pengantar Logika dan Pemrograman Pertemuan ke-12 · 2018/2019(1) - IF184982 Pengantar Logika dan Pemrograman - MM Irfan Subakti 25 y x n i x y P 1 P 2 P 3 P 1 P 2 P 3. AVL:

Penghapusan pada BST (lanjutan)

2. Simpul yang akan dihapus hanya mempunyai 1 anak→ salinkan (copy) anak tadike simpul yang akan dihapus, lalu hapus anak

2018/2019(1) - IF184982 Pengantar Logika dan Pemrograman -MM Irfan Subakti

20

50

30 70

40 60 80

Hapus(30)

50

40 70

60 80

Page 21: IF184982 Pengantar Logika dan Pemrograman Pertemuan ke-12 · 2018/2019(1) - IF184982 Pengantar Logika dan Pemrograman - MM Irfan Subakti 25 y x n i x y P 1 P 2 P 3 P 1 P 2 P 3. AVL:

Penghapusan pada BST (lanjutan)

3. Simpul yang akan dihapus mempunyai 2 anak→ temukan simpul berikutnya dari simpulyang akan dihapus dengan cara inorder (inorder successor) →min(cabang kanan). Salinkan inorder successor ke simpul yang akan dihapus, lalu hapus inorder successor

• Alternatif lainnya, simpul sebelumnya dari simpul yang akan dihapus dengan cara inorder(inorder predessor) juga dapat digunakan sebagai salinan sebelum penghapusan simpul→maks(cabang kiri)

• Hal penting yang perlu dicatat adalah, inorder successor diperluan hanya jika anak di cabang kanan tidaklah kosong. Dalam kasus ini, inorder successor dapat diperolehdengan menemukan nilai minimum pada anak di cabang kanan (min(cabang kanan)) darisimpul yang akan dihapus.

2018/2019(1) - IF184982 Pengantar Logika dan Pemrograman -MM Irfan Subakti

21

50

40 70

60 80

Hapus(50)

60

40 70

80

Page 22: IF184982 Pengantar Logika dan Pemrograman Pertemuan ke-12 · 2018/2019(1) - IF184982 Pengantar Logika dan Pemrograman - MM Irfan Subakti 25 y x n i x y P 1 P 2 P 3 P 1 P 2 P 3. AVL:

Inorder Successor pada BST

• Pada BST, inorder successor dari suatu simpul (node) adalahsimpul berikutnya yang didapat dengan penelusuran secarainorder dalam BST

• Inorder successor bernilai null (kosong) untuk simpul terakhirdalam penelusuran inorder

• Dalam BST, inorder successor dari suatu masukan simpul(input node) didefinisikan sebagai simpul dengan nilaiterkecil, yang lebih besar dari nilai pada input node→terkadang penting untuk menemukan simpul berikutnyadalam pohon terurut

2018/2019(1) - IF184982 Pengantar Logika dan Pemrograman -MM Irfan Subakti

22

Page 23: IF184982 Pengantar Logika dan Pemrograman Pertemuan ke-12 · 2018/2019(1) - IF184982 Pengantar Logika dan Pemrograman - MM Irfan Subakti 25 y x n i x y P 1 P 2 P 3 P 1 P 2 P 3. AVL:

Inorder Successor pada BST (lanjutan)

• Inorder successor dari 8 adalah 10

• Inorder successor dari 10 adalah 12

• Inorder successor dari 14 adalah 20

2018/2019(1) - IF184982 Pengantar Logika dan Pemrograman -MM Irfan Subakti

23

20

8 22

4 12

10 14

Page 24: IF184982 Pengantar Logika dan Pemrograman Pertemuan ke-12 · 2018/2019(1) - IF184982 Pengantar Logika dan Pemrograman - MM Irfan Subakti 25 y x n i x y P 1 P 2 P 3 P 1 P 2 P 3. AVL:

Penghapusan pada AVL

• Untuk menjaga agar pohon selalu dalam kondisi AVL setelah penghapusan, penghapusan standar BST di atas harus dimodifikasi untuk mendapatkankeseimbangan kembali.

• 2 operasi dasar untuk menyeimbangkan kembali BST tanpa melanggarproperti/sifat dari BST (elemen(kiri) < elemen(akar) < elemen(kanan):

• Rotasi kiri

• Rotasi kanan

2018/2019(1) - IF184982 Pengantar Logika dan Pemrograman -MM Irfan Subakti

24

Page 25: IF184982 Pengantar Logika dan Pemrograman Pertemuan ke-12 · 2018/2019(1) - IF184982 Pengantar Logika dan Pemrograman - MM Irfan Subakti 25 y x n i x y P 1 P 2 P 3 P 1 P 2 P 3. AVL:

Rotasi Kiri dan Rotasi Kanan

• P1, P2 dan P3 adalah cabang dari pohon dengan akar y (sisi kiri) dan akar x (sisikanan)

• Elemen-elemen dari pohon-pohon di atas mengikuti aturan:elemen-elemen(P1) < elemen(x) < elemen-elemen(P2) < elemen(y) < elemen-elemen(P3)

• Sehingga tetap memenuhi syarat properti/sifat BST

2018/2019(1) - IF184982 Pengantar Logika dan Pemrograman -MM Irfan Subakti

25

y

x Rotasi Kanan

Rotasi Kiri

x

y

P1 P2

P3 P1

P2 P3

Page 26: IF184982 Pengantar Logika dan Pemrograman Pertemuan ke-12 · 2018/2019(1) - IF184982 Pengantar Logika dan Pemrograman - MM Irfan Subakti 25 y x n i x y P 1 P 2 P 3 P 1 P 2 P 3. AVL:

AVL: Penghapusan

Simpul yang akan dihapus adalah s.

1. Lakukan penghapusan standar BST untuk s.

2. Dimulai dari s, bergeraklah ke atas dan temukan simpul pertama yang tidak seimbang. Diasumsikan z adalah simpul pertama yang tidak seimbang, y adalah anak cabang tertinggi dariz, dan x adalah anak cabang tertinggi dari y. (Catatan: definisi dari x dan y di sini berbedadengan x dan y pada penyisipan AVL sebelumnya)

3. Seimbangkan kembali pohon dengan melakukan rotasi yang sesuai pada cabang pohon yang berakar di z. Terdapat 4 kemungkinan kasus, karena x, y dan z dapat diatur dalam 4 posisi, yaitu:

a) y adalah cabang kiri dari z dan x adalah cabang kiri dari y (Kasus Kiri-Kiri)b) y adalah cabang kiri dari z dan x adalah cabang kanan dari y (Kasus Kiri-Kanan)c) y adalah cabang kanan dari z dan x adalah cabang kanan dari y (Kasus Kanan-Kanan)d) y adalah cabang kanan dari z dan x adalah cabang kiri dari y (Kasus Kanan-Kiri)

Seperti halnya penyisipan, di bawah akan dijelaskan tiap-tiap kasus. Sebagai catatan, tidak sepertipenyisipan, perbaikan pada simpul z tidak memperbaiki Pohon AVL secara keseluruhan. Setelah perbaikan z, maka dimungkinkan moyang/leluhur (ancestors) dari z juga harus diperbaiki.

2018/2019(1) - IF184982 Pengantar Logika dan Pemrograman -MM Irfan Subakti

26

Page 27: IF184982 Pengantar Logika dan Pemrograman Pertemuan ke-12 · 2018/2019(1) - IF184982 Pengantar Logika dan Pemrograman - MM Irfan Subakti 25 y x n i x y P 1 P 2 P 3 P 1 P 2 P 3. AVL:

Penghapusan: Kasus Kiri-Kiri

P1, P2, P3 dan P4 adalah cabang pohon

2018/2019(1) - IF184982 Pengantar Logika dan Pemrograman -MM Irfan Subakti

27

z

y

x

Kasus Kiri-Kiri

Rotasi Kanan (z)

y

x z

P1 P2

P3

P4

P1 P2 P3 P4

Page 28: IF184982 Pengantar Logika dan Pemrograman Pertemuan ke-12 · 2018/2019(1) - IF184982 Pengantar Logika dan Pemrograman - MM Irfan Subakti 25 y x n i x y P 1 P 2 P 3 P 1 P 2 P 3. AVL:

Penghapusan: Kasus Kiri-Kanan

P1, P2, P3 dan P4 adalah cabang pohon

2018/2019(1) - IF184982 Pengantar Logika dan Pemrograman -MM Irfan Subakti

28

z

y

x

Kasus Kiri-Kanan

Rotasi Kiri (y)

z

x

y Rotasi Kanan (z)

x

y z

P1

P2 P3

P4

P1 P2

P3

P4

P4P3P2P1

Page 29: IF184982 Pengantar Logika dan Pemrograman Pertemuan ke-12 · 2018/2019(1) - IF184982 Pengantar Logika dan Pemrograman - MM Irfan Subakti 25 y x n i x y P 1 P 2 P 3 P 1 P 2 P 3. AVL:

Penghapusan: Kasus Kanan-Kanan

P1, P2, P3 dan P4 adalah cabang pohon

2018/2019(1) - IF184982 Pengantar Logika dan Pemrograman -MM Irfan Subakti

29

z

Kasus Kanan-Kanan

Rotasi Kiri (z)

y

z x

P2

P3

P1 P2 P3 P4

P1

P4

y

x

Page 30: IF184982 Pengantar Logika dan Pemrograman Pertemuan ke-12 · 2018/2019(1) - IF184982 Pengantar Logika dan Pemrograman - MM Irfan Subakti 25 y x n i x y P 1 P 2 P 3 P 1 P 2 P 3. AVL:

Penghapusan: Kasus Kanan-Kiri

P1, P2, P3 dan P4 adalah cabang pohon

2018/2019(1) - IF184982 Pengantar Logika dan Pemrograman -MM Irfan Subakti

30

z

Kasus Kanan-Kiri

Rotasi Kanan (y)

P2 P3

P1

P4

y

x

z

Rotasi Kiri (z)

x

z y

P2

P3

P1 P2 P3 P4

P4

x

y

P1

Page 31: IF184982 Pengantar Logika dan Pemrograman Pertemuan ke-12 · 2018/2019(1) - IF184982 Pengantar Logika dan Pemrograman - MM Irfan Subakti 25 y x n i x y P 1 P 2 P 3 P 1 P 2 P 3. AVL:

AVL: Penghapusan (lanjutan)

Tidak seperti halnya pada penyisipan, dalam penghapusan setelah kita lakukanrotasi pada z, maka kita mungkin juga harus melakukan rotasi pada moyang/leluhur(ancestors) dari z. Maka dari itu, kita harus meneruskan penelusuran sampai keakar paling atas.

2018/2019(1) - IF184982 Pengantar Logika dan Pemrograman -MM Irfan Subakti

31

Page 32: IF184982 Pengantar Logika dan Pemrograman Pertemuan ke-12 · 2018/2019(1) - IF184982 Pengantar Logika dan Pemrograman - MM Irfan Subakti 25 y x n i x y P 1 P 2 P 3 P 1 P 2 P 3. AVL:

Penghapusan: Contoh

2018/2019(1) - IF184982 Pengantar Logika dan Pemrograman -MM Irfan Subakti

32

• Simpul dengan nilai 32 akan dihapus

• Setelah menghapus 32, maka kita bergerak ke atas dan mencarisimpul pertama yang tidak seimbang, yaitu 44

• Kita tandai 44 ini dengan z, lalu anaknya yang memiliki tinggi lebihbesar sebagai y yaitu 62, dan anaknya y yang memiliki tinggi lebihbesar sebagai x yaitu bisa 78 atau pun 50 karena keduanya memilikitinggi yang sama. Kita pilih 78. Sekarang kasusnya adalah Kanan-Kanan, maka kita lakukan rotasi kiri.

Page 33: IF184982 Pengantar Logika dan Pemrograman Pertemuan ke-12 · 2018/2019(1) - IF184982 Pengantar Logika dan Pemrograman - MM Irfan Subakti 25 y x n i x y P 1 P 2 P 3 P 1 P 2 P 3. AVL:

Penghapusan: Contoh (lanjutan)

2018/2019(1) - IF184982 Pengantar Logika dan Pemrograman -MM Irfan Subakti

33

Page 34: IF184982 Pengantar Logika dan Pemrograman Pertemuan ke-12 · 2018/2019(1) - IF184982 Pengantar Logika dan Pemrograman - MM Irfan Subakti 25 y x n i x y P 1 P 2 P 3 P 1 P 2 P 3. AVL:

Penghapusan: Contoh (lanjutan)

2018/2019(1) - IF184982 Pengantar Logika dan Pemrograman -MM Irfan Subakti

34

Page 35: IF184982 Pengantar Logika dan Pemrograman Pertemuan ke-12 · 2018/2019(1) - IF184982 Pengantar Logika dan Pemrograman - MM Irfan Subakti 25 y x n i x y P 1 P 2 P 3 P 1 P 2 P 3. AVL:

PohonAVL.java

2018/2019(1) - IF184982 Pengantar Logika dan Pemrograman -MM Irfan Subakti

35

Page 36: IF184982 Pengantar Logika dan Pemrograman Pertemuan ke-12 · 2018/2019(1) - IF184982 Pengantar Logika dan Pemrograman - MM Irfan Subakti 25 y x n i x y P 1 P 2 P 3 P 1 P 2 P 3. AVL:

PohonAVL.java (lanjutan)

2018/2019(1) - IF184982 Pengantar Logika dan Pemrograman -MM Irfan Subakti

36