Struktur data 04 (binary tree)

35
Copyright Sunarya D. Mar Copyright Sunarya D. Mar wah wah BAGIAN IV BAGIAN IV

description

 

Transcript of Struktur data 04 (binary tree)

Page 1: Struktur data 04 (binary tree)

Copyright Sunarya D. MarwahCopyright Sunarya D. Marwah

BAGIAN BAGIAN IVIV

Page 2: Struktur data 04 (binary tree)

Copyright Sunarya D. MarwahCopyright Sunarya D. Marwah

TreeTree

Page 3: Struktur data 04 (binary tree)

Copyright Sunarya D. MarwahCopyright Sunarya D. Marwah

TreeTree

Merupakan tipe data abstrak yang mempunyai hubungan antar elemen:

One to many.

Hubungan one to many meliputi:1. Hubungan one to one. 2. Hubungan one to zero.

Page 4: Struktur data 04 (binary tree)

Copyright Sunarya D. MarwahCopyright Sunarya D. Marwah

TreeTreeKarakteristik Tree

1. Terdapat satu node yang unik, yang tidak memiliki predecessor. Node ini disebut

Root.

2. Terdapat satu atau beberapa node yang tidak memiliki successor. Node-node tersebut disebut Leaf.

3. Setiap node kecuali Root, pasti memiliki satu predecessor yang unik.

4. Setiap node kecuali Leaf, pasti memiliki satu atau lebih successor

Page 5: Struktur data 04 (binary tree)

Copyright Sunarya D. MarwahCopyright Sunarya D. Marwah

TreeTreeHubungan Parent-Child

• PARENT adalah predecessor langsung dari suatu node.

• CHILD adalah successor langsung dari suatu node.

• Node-node yang memiliki Parent yang sama disebut SIBLING.

Page 6: Struktur data 04 (binary tree)

Copyright Sunarya D. MarwahCopyright Sunarya D. Marwah

TreeTree

B

A

E

F G I K

C D

JH

Root

Leaf Leaf LeafLeafLeaf Leaf

Leaf

Page 7: Struktur data 04 (binary tree)

Copyright Sunarya D. MarwahCopyright Sunarya D. Marwah

TreeTree

B

A

E

F G I K

C D

JH

Root

Leaf Leaf LeafLeafLeaf Leaf

Leaf

Level 1

Level 2

Level 3

Path

Path-length=2

Tree-heigth = 3

Page 8: Struktur data 04 (binary tree)

Copyright Sunarya D. MarwahCopyright Sunarya D. Marwah

Binary TreeBinary Tree

Binary tree adalah bentuk khusus dari tree dimana setiap node hanya diperbolehkanmemiliki maksimum dua anak.

Page 9: Struktur data 04 (binary tree)

Copyright Sunarya D. MarwahCopyright Sunarya D. Marwah

Binary TreeBinary Tree

Page 10: Struktur data 04 (binary tree)

Copyright Sunarya D. MarwahCopyright Sunarya D. Marwah

Binary TreeBinary Tree

Bentuk khusus binary-tree:

1. Full binary-treeSemua node, kecuali leaf memliki dua anak danmemiliki path-length yang sama.

2. Complete binary-treeSemua node, kecuali leaf memiliki dua anak.

3. Skewed binary-treeSemua node, kecuali leaf memiliki satu anak.

Page 11: Struktur data 04 (binary tree)

Copyright Sunarya D. MarwahCopyright Sunarya D. Marwah

Binary TreeBinary TreeSifat rekursif pada Binary tree

1. Suatu Binary tree dapat berupa tree kosong.

2. Bila tree tidak kosong, tree memiliki satu node, yang disebut Root node, beserta Subtree kiri dan Subtree kanan.

3. Subtree kiri dan Subtree kanan dapat berupa tree kosong.Bila Subtree tidak kosong, Subtree memiliki satu node - disebut Root node – beserta Subtree kiri dan Subtree kanan.

Page 12: Struktur data 04 (binary tree)

Copyright Sunarya D. MarwahCopyright Sunarya D. Marwah

Binary TreeBinary Tree

ROOT

SUBTREE KIRI SUBTREE KANAN

Page 13: Struktur data 04 (binary tree)

Copyright Sunarya D. MarwahCopyright Sunarya D. Marwah

Binary TreeBinary Tree

Tree Traversal

Akses pada suatu node pada treetidak semudah seperti pada linked

list,karena sejak masuk ke root node,ada dua jalur yang harus dipilih:left child atau right child.

Page 14: Struktur data 04 (binary tree)

Copyright Sunarya D. MarwahCopyright Sunarya D. Marwah

Binary TreeBinary Tree

Tiga macam traversal yang dapat digunakan

untuk mengakses node-node didalam Binary tree:

INORDER : Left – Root – Right.

PREORDER : Root – Left – Right.

POSTORDER : Left – Right – Root.

Page 15: Struktur data 04 (binary tree)

Copyright Sunarya D. MarwahCopyright Sunarya D. Marwah

Binary TreeBinary Tree

A

B C

ROOT

Traversal Inorder : B – A – CTraversal Preorder : A – B – CTraversal Postorder : B – C – A

Page 16: Struktur data 04 (binary tree)

Copyright Sunarya D. MarwahCopyright Sunarya D. Marwah

Binary TreeBinary Tree

A

B C

D E

ROOT

Traversal Inorder : D – B – E – A – C Traversal Preorder : A – B – D – E – C Traversal Postorder : D – E – B – C – A

Page 17: Struktur data 04 (binary tree)

Copyright Sunarya D. MarwahCopyright Sunarya D. Marwah

Binary TreeBinary Tree

A

B C

D E

ROOT

Traversal Inorder : B – A – D – C – E Traversal Preorder : A – B – C – D – E Traversal Postorder : B – D – E – C – A

Page 18: Struktur data 04 (binary tree)

Copyright Sunarya D. MarwahCopyright Sunarya D. Marwah

Binary TreeBinary Tree

A

B C

D E F G

ROOT

Traversal Inorder : D – B – E – A – F – C – GTraversal Preorder : A – B – D – E – C – F – GTraversal Postorder : D – E – B – F – G – C – A

Page 19: Struktur data 04 (binary tree)

Copyright Sunarya D. MarwahCopyright Sunarya D. Marwah

Binary TreeBinary TreeOperasi-operasi pada Binary tree

1. Create( ) Menciptakan Binary tree baru dalam keadaan kosong.

2. Insert(elemen_type e, relative_pos r, bool fail) Menambahkan satu elemen ke dalam Binary tree pada posisi relatif terhadap current pointer. Posisi current pindah ke node baru.

Relative position pada perintah Insert:Root : Insert node baru sebagai RootLeft : Insert node baru sebagai Left child.Right : Insert node baru sebagai Right child.Parent : Insert node baru sebagai Parent. (selalu Fail)

Page 20: Struktur data 04 (binary tree)

Copyright Sunarya D. MarwahCopyright Sunarya D. Marwah

Binary TreeBinary Tree

3. DeleteSub( ) Subtree yang ditunjuk oleh current akan

dihapus, posisi current pindah ke parent dari node

yang dihapus.

4. Find(relative_pos rel, bool fail) Memindahkan current ke posisi rel.

5. Empty( ) Memeriksa apakah Binary tree kosong.

6. Clear( ) Menghapus seluruh Binary tree.

Page 21: Struktur data 04 (binary tree)

Copyright Sunarya D. MarwahCopyright Sunarya D. Marwah

Binary TreeBinary Tree

Relative position pada perintah Find:Root : Memindahkan pointer Current ke RootLeft : Memindahkan pointer Current ke Left

child.Right : Memindahkan pointer Current ke Right

child.Parent: Memindahkan pointer Current ke

Parent.

Page 22: Struktur data 04 (binary tree)

Copyright Sunarya D. MarwahCopyright Sunarya D. Marwah

Binary TreeBinary Tree

7. Update(elemen_type e) Isi node yang ditunjuk oleh current akan diganti oleh isi dari e.

8. Retrieve(elemen_type *e) Menyalin isi node yang ditunjuk oleh current ke variabel e.

9. Traversal(order ord) Melaksanakan traversal sesuai dengan ord, yaitu: Inorder, Preorder atau Postorder. Posisi current tidak berubah.

Page 23: Struktur data 04 (binary tree)

Copyright Sunarya D. MarwahCopyright Sunarya D. Marwah

Contoh Operasi pada Binary-TreeContoh Operasi pada Binary-Tree

1. Create();1. Create();

2. Insert(‘A’, Root, Fail); 2. Insert(‘A’, Root, Fail);

Binary TreeBinary Tree

R C

NULL NULL

R = Root, C = Current

A

R

C

Page 24: Struktur data 04 (binary tree)

Copyright Sunarya D. MarwahCopyright Sunarya D. Marwah

Contoh Operasi pada Binary-Tree (Lanjutan)Contoh Operasi pada Binary-Tree (Lanjutan)

3. Insert(‘B’, Left , Fail); 4. Insert(’C’, 3. Insert(‘B’, Left , Fail); 4. Insert(’C’, Left, Fail);Left, Fail);

Binary TreeBinary Tree

A

R

C B

A

R

C

B

C

Page 25: Struktur data 04 (binary tree)

Copyright Sunarya D. MarwahCopyright Sunarya D. Marwah

Contoh Operasi pada Binary-Tree (Lanjutan)Contoh Operasi pada Binary-Tree (Lanjutan)

5. Find(Parent , Fail); 6. Insert(’D’, Left, 5. Find(Parent , Fail); 6. Insert(’D’, Left, Fail);Fail);

Binary TreeBinary Tree

A

R

C B

C

A

R

C B

C

Fail = true

Page 26: Struktur data 04 (binary tree)

Copyright Sunarya D. MarwahCopyright Sunarya D. Marwah

Contoh Operasi pada Binary-Tree (Lanjutan)Contoh Operasi pada Binary-Tree (Lanjutan)

7. Insert(‘D’, Right, Fail); 8. Find(Root, 7. Insert(‘D’, Right, Fail); 8. Find(Root, Fail);Fail);

Binary TreeBinary Tree

A

R

C

B

C

A

R

B

C D C D

atau Find(Parent,Fail

);2x

Page 27: Struktur data 04 (binary tree)

Copyright Sunarya D. MarwahCopyright Sunarya D. Marwah

Contoh Operasi pada Binary-Tree (Lanjutan)Contoh Operasi pada Binary-Tree (Lanjutan)

9. Insert(‘E’, Right, Fail); 10. Insert(‘F’, 9. Insert(‘E’, Right, Fail); 10. Insert(‘F’, Right, Fail);Right, Fail);

Binary TreeBinary Tree

A

R

B

C D

C E

A

R

B

C D C

E

F

Page 28: Struktur data 04 (binary tree)

Copyright Sunarya D. MarwahCopyright Sunarya D. Marwah

Contoh Operasi pada Binary-Tree (Lanjutan)Contoh Operasi pada Binary-Tree (Lanjutan)

12. Traversal(Inorder); 13. 12. Traversal(Inorder); 13. Traversal(Postorder);Traversal(Postorder);

Binary TreeBinary Tree

A

R

B

C D

C E

C B D A E

A

R

B

C D

C E

C D B E A

Page 29: Struktur data 04 (binary tree)

Copyright Sunarya D. MarwahCopyright Sunarya D. Marwah

Contoh Operasi pada Binary-Tree (Lanjutan)Contoh Operasi pada Binary-Tree (Lanjutan)

14. Update(‘B’); 15. Find(Parent, 14. Update(‘B’); 15. Find(Parent, Fail);Fail);

Binary TreeBinary Tree

A

R

B

C D

C B

A

R

B

C D

C

B

Page 30: Struktur data 04 (binary tree)

Copyright Sunarya D. MarwahCopyright Sunarya D. Marwah

Contoh Operasi pada Binary-Tree (Lanjutan)Contoh Operasi pada Binary-Tree (Lanjutan)

16. Find(Left, Fail); 17. 16. Find(Left, Fail); 17. Deletesub(Parent, Fail);Deletesub(Parent, Fail);

Binary TreeBinary Tree

A

R

B

C D

C B

A

R

C

B

Page 31: Struktur data 04 (binary tree)

Copyright Sunarya D. MarwahCopyright Sunarya D. Marwah

Binary TreeBinary Tree

Implementasi Binary tree dengan Array.

• Indeks pada array menyatakan nomor node.

• Indeks 0 adalah Root node.

• Indeks Left child dari node p adalah 2p + 1.

• Indeks Right child dari node p adalah 2p + 2.

• Indeks Parent dari node p adalah (p-1)/2.

Page 32: Struktur data 04 (binary tree)

Copyright Sunarya D. MarwahCopyright Sunarya D. Marwah

Binary TreeBinary Tree

B

A

C

D E F G

H I

Contoh Binary TreeContoh Binary TreeImplementasi dengan arrayImplementasi dengan array

Page 33: Struktur data 04 (binary tree)

Copyright Sunarya D. MarwahCopyright Sunarya D. Marwah

Binary TreeBinary Tree

[0] [1] [2] [3] [4] [5] [6] [7] [8] [9][10][11][12]

Posisi elemen/node dalam array.

A B C D E F G H I

Kerugian implementasi binary-tree dengan array ?Kerugian implementasi binary-tree dengan array ?

Page 34: Struktur data 04 (binary tree)

Copyright Sunarya D. MarwahCopyright Sunarya D. Marwah

Binary TreeBinary Tree

Implementasi dengan Double Linked list.

struct TNode{ elemen_type data; struct TNode *left; struct TNode *right;};

Page 35: Struktur data 04 (binary tree)

Copyright Sunarya D. MarwahCopyright Sunarya D. Marwah

Binary TreeBinary Tree

Implementasi dengan Multiple Linked list.

struct TNode{ elemen_type data; struct TNode *left; struct TNode *right; struct TNode *parent;};