Algoritma dan Struktur Data

40
Algoritma dan Struktur Data AVL TREE Review BST

description

Algoritma dan Struktur Data. A VL TREE Review BST. Apakah Binary Search Tree itu ?. Pemakaian tree structure dalam proses pencarian (search) Sifat Binary Tree: Pada sebuah node x, elemen yang berada di LEFT sub-tree selalu lebih KECIL daripada x - PowerPoint PPT Presentation

Transcript of Algoritma dan Struktur Data

Algoritma dan Struktur Data

AVL TREE

Review BST

Pemakaian tree structure dalam proses pencarian (search) Sifat Binary Tree:

Pada sebuah node x, – elemen yang berada di LEFT sub-tree selalu lebih KECIL

daripada x– elemen yang berada di RIGHT sub-tree selalu lebih BESAR

Atau SAMA DENGAN daripada x Binary Search Tree: proses pencarian (SEARCHING)

berbasis binary tree

Apakah Binary Search Tree itu ?

Example of a binary search tree

LATIHAN BST

Coba simulasikan penambahan pada sebuah BST dengan urutan penambahan:

– 14, 16, 10, 8, 12, 4, 9, 1– 8, 12, 4, 9, 1, 14, 16, 10

Proses Pencarian (contoh SUKSES)

2

6

13

15

215

7

search(7) 7<13

7>5

7==7Data yang dicari BERHASIL ditemukan

13→5 →7

14

10 16

8 12

4 9

1

LATIHAN BST

9

8

4 12

1 14

1610

Algoritma dan Struktur Data

AVL TREE

Tujuan

Memahami variant dari Binary Search Tree yang balanced

Binary Search Tree yang tidak balance dapat membuat seluruh operasi memiliki kompleksitas running time O(n) pada kondisi worst case.

X X

AVL Trees Untuk setiap node dalam tree, ketinggian

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

H

H-1H-2

AVL Trees

10

5

3

20

2

1 3

10

5

3

20

1

43

5

AVL Trees

12

8 16

4 10

2 6

14

12

8 16

4 10

2 6

14

1

Insertion pada AVL Tree

Setelah insert 1

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:

– Single rotation– Double rotation

Kondisi tidak balance

RP

Q

k1

k2

Q

k2

P

k1

R

Sebuah penambahan pada subtree:

– P (outside) - case 1

– Q (inside) - case 2

Sebuah penambahan pada subtree:

– Q (inside) - case 3

– R (outside) - case 4

HP=HQ=HR

A

k2

B

k1

CCBA

k1

k2

Single Rotation (case 1)

HA=HB+1HB=HC

Single Rotation (case 4)

C

k1

B

k2

AA B C

k2

k1

HA=HB

HC=HB+1

Q

k2

P

k1

RR

P

Q

k1

k2

Keterbatasan Single Rotation Single rotation tidak bisa digunakan

untuk kasus 2 dan 3 (inside case)

HQ=HP+1HP=HR

C

k3

A

k1

D

B

k2

Double Rotation: Langkah

C

k3

A

k1

D

B

k2

HA=HB=HC=HD

C

k3

A

k1

DB

k2

Double Rotation: Langkah

C

k3

A

k1

D

B

k2

C

k3

A

k1

DB

k2

Double Rotation

HA=HB=HC=HD

B

k1

D

k3

A

C

k2

B

k1

D

k3

A C

k2

Double Rotation

HA=HB=HC=HD

3

Contoh

penambahan 3 pada AVL tree

11

8 20

4 16 27

8

8

11

4 20

3 16 27

Contoh

penambahan 5 pada AVL tree

5

11

8 20

4 16 27

8

4

11

8 20

5 16 27

8

Contoh

Rotasi ke 2

8

11

5 20

4 16 27

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

http://www.strille.net/works/media_technology_projects/avl-tree_2001/

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.

4. Bila Tree masih belum balance, ulangi lagi dari langkah 2.

Menghapus node X pada AVL Trees

Deletion:

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

Rebalancing

Delete 55 (Kasus 1)

60

20 70

10 40 65 85

5 15 30 50 80 90

55

Delete 55 (Kasus 1)

60

20 70

10 40 65 85

5 15 30 50 80 90

55

Delete 50 (Kasus 2)

60

20 70

10 40 65 85

5 15 30 50 80 90

55

Delete 50 (Kasus 2)

60

20 70

10 40 65 85

5 15 30 50 80 90

55

Delete 60 (Kasus 3)

60

20 70

10 40 65 85

5 15 30 50 80 90

55

prev

Delete 60 (Kasus 3)

55

20 70

10 40 65 85

5 15 30 50 80 90

Delete 55 (Kasus 3)

55

20 70

10 40 65 85

5 15 30 50 80 90

prev

Delete 55 (Kasus 3)

50

20 70

10 40 65 85

5 15 30 80 90

Delete 50 (Kasus 3)

50

20 70

10 40 65 85

5 15 30 80 90

prev

Delete 50 (Kasus 3)

40

20 70

10 30 65 85

5 15 80 90

Delete 40 (Kasus 3)

40

20 70

10 30 65 85

5 15 80 90

prev

Delete 40 : Rebalancing

30

20 70

10 65 85

5 15 80 90

Kasus ?

Delete 40: setelah rebalancing

30

7010

20 65 855

15 80 90

Single rotation is preferred!