Struktur data 05 (bs avl tree)

29
Copyright Sunarya D. Marwah Copyright Sunarya D. Marwah BAGIAN V BAGIAN V

Transcript of Struktur data 05 (bs avl tree)

Page 1: Struktur data 05 (bs avl tree)

Copyright Sunarya D. MarwahCopyright Sunarya D. Marwah

BAGIAN VBAGIAN V

Page 2: Struktur data 05 (bs avl tree)

Copyright Sunarya D. MarwahCopyright Sunarya D. Marwah

Binary Search TreeBinary Search Tree

Binary Search Tree adalah Binary Tree dengan ketentuan sebagai berikut:

1. Semua Left child harus lebih kecil dari Parent dan Right chi ld.

2. Semua Right child harus lebih besar dari Parent dan Left chi ld.

3. Parent harus lebih besar dari Left Subtree dan harus lebih kecil dari Right Subtree.

4. Tidak boleh ada node yang mempunyai nilai yang sama, dengan kata lain t idak boleh terjadi duplikasi data.

Page 3: Struktur data 05 (bs avl tree)

Copyright Sunarya D. MarwahCopyright Sunarya D. Marwah

Binary Search TreeBinary Search Tree

Target node

Karena ketentuan diatas, maka Binary Search tree dapat digunakan untuk tempat penyimpa-nan data secara terurut, sehingga pencarian data (searching) bisa lebih efisien. Untuk itu dapat ditentukan suatu target node yaitu suatu node yang berisi data yang akan dicari.

Page 4: Struktur data 05 (bs avl tree)

Copyright Sunarya D. MarwahCopyright Sunarya D. Marwah

Binary Search TreeBinary Search Tree

Gufron

Edi Kemal

Halim SylviaCecilia Farid

Page 5: Struktur data 05 (bs avl tree)

Copyright Sunarya D. MarwahCopyright Sunarya D. Marwah

Binary Search TreeBinary Search Tree

Operasi-operasi pada Binary Search tree.

Semua operasi pada Binary tree dapat digunakan pada Binary Search tree, kecuali:

InsertUpdateDeletsub

Perlu perubahan pada operasi Insert dan Delete sehingga urutan data didalam tree dapat dipertahankan.

Page 6: Struktur data 05 (bs avl tree)

Copyright Sunarya D. MarwahCopyright Sunarya D. Marwah

Binary Search TreeBinary Search TreeInsert(elemen_type e)

• Insert selalu dimulai dari Root node.• Bila tree kosong, maka node baru sebagai Root node. • Bi la t idak kosong nilai e dibandingkan dengan ni lai Root.• Bi la lebih kecil insert ke subtree kir i .• Bi la lebih besar insert ke subtree kanan.

Contoh, Insert: 45, 23, 12, 78, 63, 96, 27

Page 7: Struktur data 05 (bs avl tree)

Copyright Sunarya D. MarwahCopyright Sunarya D. Marwah

Binary Search TreeBinary Search Tree

33

21 50

14 25

10 18

40 62

2. Delete( )

29 43 57

26

Page 8: Struktur data 05 (bs avl tree)

Copyright Sunarya D. MarwahCopyright Sunarya D. Marwah

Binary Search TreeBinary Search Tree

Tiga keadaan delete:Tiga keadaan delete:

1.1. Delete node leafDelete node leafo Contoh: Delete(26), tidak ada pengganti.Contoh: Delete(26), tidak ada pengganti.

2.2. Delete node selain leaf, anak 1Delete node selain leaf, anak 1o Contoh: Delete(62), pengganti adalah anak Contoh: Delete(62), pengganti adalah anak satu-satunya.satu-satunya.

3.3. Delete node selain leaf, anak 2Delete node selain leaf, anak 2o Contoh: Delete(33), pengganti adalah salah satu Contoh: Delete(33), pengganti adalah salah satu

dari dua anak, predecessor atau successor.dari dua anak, predecessor atau successor.

Page 9: Struktur data 05 (bs avl tree)

Binary Search TreeBinary Search Tree Predecessor(33) = 29Predecessor(33) = 29 Successor(33) = 40Successor(33) = 40

Copyright Sunarya D. MarwahCopyright Sunarya D. Marwah

33

21 50

14 25

10 18

40 62

29 43 57

26

Page 10: Struktur data 05 (bs avl tree)

Copyright Sunarya D. MarwahCopyright Sunarya D. Marwah

AVL treeAVL tree Kelemahan yang dialami oleh Kelemahan yang dialami oleh Binary Search TreeBinary Search Tree adalah adalah

kemungkinan bentuk tree yang didapat adalah bentuk kemungkinan bentuk tree yang didapat adalah bentuk SkewedSkewed (Binary tree miring) sehingga pencarian menjadi (Binary tree miring) sehingga pencarian menjadi sekuensial. sekuensial.

Untuk menghindari hal tersebut, digunakan AVL tree, Untuk menghindari hal tersebut, digunakan AVL tree, dengan sifat sebagai berikut: dengan sifat sebagai berikut: Perbedaan Perbedaan ketinggianketinggian antara subtree kiri dengan subtree antara subtree kiri dengan subtree kanan tidak lebih dari 1.kanan tidak lebih dari 1.

AVL-Tree adalah Binary Search Tree yang menjaga AVL-Tree adalah Binary Search Tree yang menjaga ketinggian subtree kiri dengan subtree kananketinggian subtree kiri dengan subtree kanan

tidak lebih dari 1.tidak lebih dari 1.

Page 11: Struktur data 05 (bs avl tree)

Copyright Sunarya D. MarwahCopyright Sunarya D. Marwah

AVL treeAVL tree Contoh, Insert: 10, 20, 30, 40, 50, 60, 70. ke BS-TreeContoh, Insert: 10, 20, 30, 40, 50, 60, 70. ke BS-Tree

20

10

70

50

40

30

60

Diperlukan 7 langkah untuk menemukan node 70Diperlukan 7 langkah untuk menemukan node 70

Page 12: Struktur data 05 (bs avl tree)

Copyright Sunarya D. MarwahCopyright Sunarya D. Marwah

AVL treeAVL tree

40

20 60

10 30 50 70

Contoh, Insert: 10, 20, 30, 40, 50, 60, 70. ke AVL TreeContoh, Insert: 10, 20, 30, 40, 50, 60, 70. ke AVL Tree

Diperlukan hanya 3 langkah untuk menemukan node 70Diperlukan hanya 3 langkah untuk menemukan node 70

Page 13: Struktur data 05 (bs avl tree)

Copyright Sunarya D. MarwahCopyright Sunarya D. Marwah

AVL treeAVL tree

45

25 65

15 35 55 75

10 20 30 40 50 60 70 80

N d C1 0 1

3 1 2

7 2 3

15 3 4

Page 14: Struktur data 05 (bs avl tree)

Copyright Sunarya D. MarwahCopyright Sunarya D. Marwah

AVL treeAVL tree Secara umum dapat dituliskan hubungan jumlah node Secara umum dapat dituliskan hubungan jumlah node

(N) dengan pathlength (d) adalah:(N) dengan pathlength (d) adalah:

N = 2N = 2(d+1) (d+1) – 1– 1

22(d+1) (d+1) == N + 1N + 1

loglog2222(d+1) (d+1) == loglog2 2 (N + 1)(N + 1)

d + 1 = logd + 1 = log2 2 (N + 1)(N + 1)

Karena jumlah langkah (C) = d + 1, makaKarena jumlah langkah (C) = d + 1, maka

C = logC = log2 2 (N + 1)(N + 1)

Page 15: Struktur data 05 (bs avl tree)

Copyright Sunarya D. MarwahCopyright Sunarya D. Marwah

AVL treeAVL tree20

10 50

5 12

4 6

40 65

AVL-Tree ?

Page 16: Struktur data 05 (bs avl tree)

Copyright Sunarya D. MarwahCopyright Sunarya D. Marwah

AVL treeAVL tree20

10 50

5 12

4 6

40

AVL-Tree ?

Page 17: Struktur data 05 (bs avl tree)

Copyright Sunarya D. MarwahCopyright Sunarya D. Marwah

AVL treeAVL tree20

10 50

5 12

6

40

AVL-Tree ?

Page 18: Struktur data 05 (bs avl tree)

Copyright Sunarya D. MarwahCopyright Sunarya D. Marwah

AVL treeAVL tree20

10 50

5

6

40

AVL-Tree ?

Page 19: Struktur data 05 (bs avl tree)

Copyright Sunarya D. MarwahCopyright Sunarya D. Marwah

AVL treeAVL tree

Keseimbangan subtree kiri dan kanan, dijaga dengan suatu mekanisme rotasi, untuk itu perlu diterapkan beberapa ketentuan sebagai berikut:

1.Tanda keseimbangan subtree:

a. Node parent diberi tanda 0, bila ketinggian subtree kiri = subtree kanan

b. Node parent diberi tanda +,bila ketinggian subtree kiri < subtree kanan

c. Node parent diberi tanda -, bila ketinggian subtree kiri > subtree kanan

Page 20: Struktur data 05 (bs avl tree)

Copyright Sunarya D. MarwahCopyright Sunarya D. Marwah

AVL treeAVL tree

20

10 50

5 12 40 65

Search path untuk data 17

2. Search Path

Path dimana node baru akan melaluinya untuk sampai pada posisi insert. Contoh: Insert(17)

Page 21: Struktur data 05 (bs avl tree)

Copyright Sunarya D. MarwahCopyright Sunarya D. Marwah

AVL treeAVL tree3. Pivot node

Pivot node adalah node yang:

a. berada di Search-path

b. bertanda + atau –

c. paling dekat dengan node baru

PIVOT

Pivot node merupakan sumbu putar, bila regenerasi tree diperlukanPivot node merupakan sumbu putar, bila regenerasi tree diperlukan

Page 22: Struktur data 05 (bs avl tree)

Copyright Sunarya D. MarwahCopyright Sunarya D. Marwah

AVL treeAVL tree20

10 50

5 16

4 6

40 65

30 4614 61 76

54 63

Page 23: Struktur data 05 (bs avl tree)

Copyright Sunarya D. MarwahCopyright Sunarya D. Marwah

AVL treeAVL treeOperasi Insert

Kasus 1Tidak terdapat pivot node, maka node baru langsung masuk tanpa harus melihat keseimbangan subtree.

Kasus 2Terdapat pivot node, periksa keseimbangan subtree, bila node baru tidak menyebabkan perbedaan ketinggian subtree > 1 maka node dapat masuk tanpa regenerasi tree.

Keseimbangan subtree dilihat dari pivot node.Keseimbangan subtree dilihat dari pivot node.

Page 24: Struktur data 05 (bs avl tree)

Copyright Sunarya D. MarwahCopyright Sunarya D. Marwah

AVL treeAVL treeKasus 3Terdapat pivot node, periksa keseimbangan subtree, bila node baru menyebabkan perbedaan ketinggian subtree > 1 maka node masuk dengan melakukan regenerasi tree.

Insert: 40, 60, 20, 30, 50, 10, 70. Insert: 40, 60, 20, 30, 50, 10, 70.

Insert: 30, 20, 10, 60, 50, 70, 40. Insert: 30, 20, 10, 60, 50, 70, 40.

Insert: 50, 60, 70, 30, 20, 10, 40. Insert: 50, 60, 70, 30, 20, 10, 40.

Page 25: Struktur data 05 (bs avl tree)

Copyright Sunarya D. MarwahCopyright Sunarya D. Marwah

AVL treeAVL treeOperasi Delete

Pada operasi delete, t idak ada pivot node, karena tidak ada node baru yang akan masuk. Sebagai acuan bi la operasi delete menyebabkan tree harus regenerasi, di laku-kan pemeriksaan secara berjenjang mulai dari anak node dari anak node yang dihapusyang dihapus dimana node pengganti berada, di lanjutkan ke posisi node yang dihapus, kemudian terus naik hingga Root node.

Selama pemeriksaan dapat terjadi beberapa rotasi baik rotasi tunggal maupun rotasi ganda, dengan demikian operasi delete merupakan operasi yang sangat kompleks, lebih sulit dari operasi insert.

Page 26: Struktur data 05 (bs avl tree)

Copyright Sunarya D. MarwahCopyright Sunarya D. Marwah

AVL treeAVL tree 13

5 16

3

2 4

14 18

8 11 17 2015

1 7 9 12 19

6

Delete node 16

10

Page 27: Struktur data 05 (bs avl tree)

Copyright Sunarya D. MarwahCopyright Sunarya D. Marwah

AVL treeAVL treeMenurut aturan Binary Search tree, pengganti node 16 dapatdiambil dari subtree kir i (node 15) atau dari subtree kanan (node 17). Dalam contoh ini, pengganti diambil dari subtree

kir i.

Pemeriksaan:

1. Node 14, sebagai anak kir i node 15 adalah leaf node (bertanda 0, meskipun tidak ditulis).

2. Node 15, sebagi pengganti node 16 yang dihapus, memiliki subtree kir i dan subtree kanan dengan selisih ketinggian >

1, sehingga harus dilakukan regenerasi. Karena node 15 mempunyai tanda + sama dengan tanda node 18, maka di lakukan rotasi kir i tunggal.

Page 28: Struktur data 05 (bs avl tree)

Copyright Sunarya D. MarwahCopyright Sunarya D. Marwah

AVL treeAVL treePemeriksaan (lanjutan):

3. Setelah rotasi selesai, node 18 menggantikan node 15.

4. Node 13 sebagai parent dari node 18, memiliki subtree kiri dan subtree kanan dengan selisih > 1, sehingga harus dilakukan regenerasi. Karena node 13 adalah mempunyai tanda –

sedangkan anak sebelah kiri, yaitu node 5 mempunyai tanda +, oleh karena

itu harus dilakukan rotasi ganda.

5. Node 13 adalah Root node, dengan demikian bila rotasi telah di laksanakan, maka seluruh proses pemeriksaan selesai, dan

hasilnya akan berupa AVL tree.

Page 29: Struktur data 05 (bs avl tree)

Copyright Sunarya D. MarwahCopyright Sunarya D. Marwah

AVL treeAVL tree10

5

3

2 4 7 9 15

13

1 6

8 11 18

12 20

14 17 19