Struktur data 04 (binary tree)

Post on 27-Nov-2014

1.838 views 18 download

description

 

Transcript of Struktur data 04 (binary tree)

Copyright Sunarya D. MarwahCopyright Sunarya D. Marwah

BAGIAN BAGIAN IVIV

Copyright Sunarya D. MarwahCopyright Sunarya D. Marwah

TreeTree

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.

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

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.

Copyright Sunarya D. MarwahCopyright Sunarya D. Marwah

TreeTree

B

A

E

F G I K

C D

JH

Root

Leaf Leaf LeafLeafLeaf Leaf

Leaf

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

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.

Copyright Sunarya D. MarwahCopyright Sunarya D. Marwah

Binary TreeBinary 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.

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.

Copyright Sunarya D. MarwahCopyright Sunarya D. Marwah

Binary TreeBinary Tree

ROOT

SUBTREE KIRI SUBTREE KANAN

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.

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.

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

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

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

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

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)

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.

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.

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.

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

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

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

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

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

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

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

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

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.

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

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 ?

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;};

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;};