• Tidak ada hasil yang ditemukan

Think Different Materi ASD 2014 pertemuan_18

N/A
N/A
Protected

Academic year: 2017

Membagikan "Think Different Materi ASD 2014 pertemuan_18"

Copied!
57
0
0

Teks penuh

(1)
(2)
(3)

Definisi

Sebuah binary tree dimana

(4)

Contoh BST

20

10

6

2 8

15

40

30

(5)

Binary Search Tree

Operasi BST : penambahan,

penghapusan, pencarian node tertentu, pencarian niai terkecil dan pencarian

nilai terbesar.

• Properti Binary Search Tree :

Untuk setiap node X, semua elemen di

(6)

Insert

Dimulai dengan

penelusuran dari root untuk mencari posisi yang tepat.

Jika elemen X

ditemukan (berarti X sudah ada di BST), maka tidak perlu melakukan aksi apapun.

Jika tidak, maka

letakkan X sebagai node terakhir pada jalur penelusuran

Time complexity =

(7)

Delete

Saat akan menghapus sebuah node,

kita juga harus memikirkan seluruh node anak dari node tsb.

Hal penting adalah agar pohon setelah

(8)

Operasi Penghapusan / remove()

Ada 3 kasus :

Elemen ada di leaf/daun.

Elemen yang memiliki degree 1.

(9)

Penghapusan Node Daun (Node

7)

Remove a leaf element. key = 7

20

10

6

2 8

15

40

30

25 35

7

(10)

Penhapusan Node Daun (Node

35)

Remove a leaf element. key = 35

20

10

6

2 8

15

40

30

25 35

7

(11)

Penghapusan Node Ber-degree 1

Remove from a degree 1 node. key = 40

20

10

6

2 8

15

40

30

25 35

7

(12)

Penghapusan Node Ber-degree 1

Remove from a degree 1 node. key = 15

20

10

6

2 8

15

40

30

25 35

7

(13)

Penghapusan Node Ber-degree 2

Remove from a degree 2 node. key = 10

20

10

6

2 8

15

40

30

25 35

7

(14)

Remove From A Degree 2 Node

20 10 6 2 8 15 40 30 25

Replace with largest key in left subtree (or smallest in right subtree).

35

7

(15)

Penghapusan Node Ber-degree 2

20 10 6 2 8 15 40 30 25

Replace with largest key in left subtree (or smallest in right subtree).

35

7

(16)

Penghapusan Node Ber-degree 2

20 8 6 2 8 15 40 30 25

Replace with largest key in left subtree (or smallest in right subtree).

35

7

(17)

Latihan

Remove from a degree 2 node. key = 20

20

10

6

2 8

15

40

30

25 35

7

(18)

Penghapusan Node Ber-degree 2

20

10

6

2 8

15

40

30

25

Replace with largest in left subtree.

35

7

(19)

Penghapusan Node Ber-degree 2

20

10

6

2 8

15

40

30

25

Replace with largest in left subtree.

35

7

(20)

Penghapusan Node Ber-degree 2

18

10

6

2 8

15

40

30

25

Replace with largest in left subtree.

35

7

(21)

Hasil Akhir

18

10

6

2 8

15

40

30

25 35

(22)

Pencarian pada BST

Jika mencari elemen

bernilai 15, maka akan langsung ditemukan.

Jika mencari elemen

bernilai < 15, maka kita cari di subpohon kiri.

Jika mencari elemen

(23)
(24)

findMin/ findMax

findMin : mengembalikan node dengan elemen

terkecil pada BST

Pencarian dimulai dari root dan bergerak ke kiri

terus sepanjang subpohon kiri dan berhenti pada elemen terakhir.

(25)

Algoritma dan Struktur Data

(26)

Tujuan

Memahami variant dari Binary Search Tree yang

balanced

 Binary Search Tree yang tidak balance dapat membuat seluruh

(27)

X X

AVL Trees

Untuk setiap node dalam tree, ketinggian

subtree di anak kiri dan subtree di anak kanan hanya berbeda maksimum 1.

H

(28)

AVL Trees

12

8 16

4 10

2 6

(29)

12

8 16

4 10

2 6

14

1

Insertion pada AVL Tree

(30)

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:

(31)

Kondisi tidak

balance

C A B k1 k2 B k2 A k1 C

Sebuah penambahan

pada subtree:

A (outside) - case 1B (inside) - case 2

Sebuah penambahan pada

subtree:

B (inside) - case 3C (outside) - case 4

(32)

A

k2

B k1

C

C B

A

k1

k2

Single Rotation (case 1)

(33)

Single Rotation (case 4)

C k1

B k2

A

A B C

k2

k1

(34)

B k2 A k1 C C A B k1 k2

Keterbatasan Single Rotation

Single rotation tidak bisa digunakan

untuk kasus 2 dan 3 (inside case)

(35)

C k3 A k1 D B k2

Double Rotation: Langkah

C k3 A k1 D B k2

(36)

C

k3

A

k1

D B

k2

(37)

C k3 A k1 D B k2 C k3 A k1 D B k2

Double Rotation

(38)

B k1 D k3 A C k2 B k1 D k3 A C k2

Double Rotation

(39)

3

Contoh

penambahan 3 pada AVL tree

11

8 20

4 16

27 8

8

11

4 20

(40)

Contoh

penambahan 5 pada AVL tree

(41)

Contoh

Rotasi ke 2

8

11

5 20

(42)

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

(43)

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.

(44)

Menghapus node X pada AVL Trees

Deletion:

Kasus 1: jika X adalah leaf, delete XKasus 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

(45)

Delete 55 (Kasus 1)

60

20 70

10 40 65 85

5 15 30 50 80 90

(46)

Delete 55 (Kasus 1)

60

20 70

10 40 65 85

5 15 30 50 80 90

(47)

Delete 50 (Kasus 2)

60

20 70

10 40 65 85

5 15 30 50 80 90

(48)

Delete 50 (Kasus 2)

60

20 70

10 40 65 85

5 15 30 50 80 90

(49)

Delete 60 (Kasus 3)

60

20 70

10 40 65 85

5 15 30 50 80 90

55

(50)

Delete 60 (Kasus 3)

55

20 70

10 40 65 85

(51)

Delete 55 (Kasus 3)

55

20 70

10 40 65 85

5 15 30 50 80 90

(52)

Delete 55 (Kasus 3)

50

20 70

10 40 65 85

(53)

Delete 50 (Kasus 3)

50

20 70

10 40 65 85

5 15 30 80 90

(54)

Delete 50 (Kasus 3)

40

20 70

10 30 65 85

(55)

Delete 40 (Kasus 3)

40

20 70

10 30 65 85

5 15 80 90

(56)

Delete 40 : Rebalancing

30

20 70

10 65 85

5 15 80 90

(57)

Delete 40: setelah

rebalancing

30

70 10

20 65 85

5

15 80 90

Referensi

Dokumen terkait

• Untuk menambah data pada linked list, harus diketahui head pointer (pHead), pointer yang menunjuk node sebelum tempat penyisipan (pPre) data yang akan

(node ekor) digunakan sebuah pointer yang akan menyimpan alamat dari node belakang. • Pointer ini biasanya diberi nama

menggunakan pointer, dimana setiap node memiliki 3 field, yaitu 1 field pointer yang menunjuk pointer berikutnya (next), 1 field menunjuk pointer sebelumnya (prev), serta sebuah

node downward, swapping with its larger child until the new node reaches an acceptable location.. Removing the Top of

Graph dengan 6 node dan 7 edge yang merepresentasikan jaringan pertemanan pada Facebook.. • Setiap sisi berlaku

Kunjungi simpul yang belum dikunjungi dan bertetangga dengan simpul-simpul yang tadi dikunjungi, demikian seterusnya.... Depth First

• The heap sort algorithm starts by using procedure BUILD-HEAP to build a heap on the input array A[1. Since the maximum element of the array stored at the root A [1], it can be

 Teknik menyusuri tiap node dalam sebuah tree secara sistematis, sehingga semua node dapat dan hanya satu kali saja dikunjungi3.  Ada tiga