m8-binary-tree.ppt

69
Binary Tree Teknik Informatika - Universitas Muhammadiyah Malang (UMM) Tahun Akademik 2010-2011 Oleh : Nur Hayatin, S.ST

Upload: abdillah-satari-rahim

Post on 31-Jan-2016

221 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: m8-binary-tree.ppt

Binary Tree

Teknik Informatika - Universitas Muhammadiyah Malang (UMM)Tahun Akademik 2010-2011

Oleh : Nur Hayatin, S.ST

Page 2: m8-binary-tree.ppt

Sub Topik

• Penjelasan Tree• Istilah pada tree• Binary Tree• Jenis Binary Tree• ADT Binary tree

Page 3: m8-binary-tree.ppt

Tree (Pohon)

Page 4: m8-binary-tree.ppt

Real World

root

branches

leaves

Page 5: m8-binary-tree.ppt

Computer Scientist’s View

branches

leavesroot

nodes

Page 6: m8-binary-tree.ppt

Definisi

• Kumpulan node yang saling terhubung secara hirarki.

• Hirarki = bertingkat.• Tiap node dapat berisi data dan link

(penghubung) ke node lainnya• Tiap node memiliki satu induk, kecuali

node root (akar) yang tidak memiliki induk.• Tiap node dapat memiliki anak dalam

jumlah berapapun.

Page 7: m8-binary-tree.ppt

Linked list dan Tree

• Linked list linear/serial data– Contoh : nama-nama mahasiswa dalam

satu kelas.

• Tree non linear/hierachically data– Contoh : tingkatan pegawai dalam

perusahaan.

Page 8: m8-binary-tree.ppt

Contoh Tree

• Mis. : Struktur organisasi sebuah

perusahaan

Page 9: m8-binary-tree.ppt

Contoh Tree

– Mis. : Daftar isi sebuah buku

Page 10: m8-binary-tree.ppt

Contoh Tree

– Mis. : File system

Page 11: m8-binary-tree.ppt

Tree (Pohon)

• Root adalah node yang memiliki hirarki tertinggi.

• Subtree (pohon anak) adalah beberapa node yang tersusun hirarki yang ada dibawah root.

Page 12: m8-binary-tree.ppt

Root and Subtrees

Object

Number Throwable OutputStream

Integer Double Exception FileOutputStream

RuntimeException

root

Page 13: m8-binary-tree.ppt

Tree (Pohon)

• Level adalah posisi hirarki dari sebuah node. Untuk root bisa diberikan level 0 atau 1.

• Leaf (Daun) adalah node yang tidak memiliki anak atau node yang berada pada hirarki paling bawah.

• Height (tinggi)/depth adalah jumlah level dari sebuah tree.

Page 14: m8-binary-tree.ppt

Leaves

Object

Number Throwable OutputStream

Integer Double Exception FileOutputStream

RuntimeException

Page 15: m8-binary-tree.ppt

Node DegreeObject

Number Throwable OutputStream

Integer Double Exception FileOutputStream

RuntimeException

3

2 1 1

0 0 1 0

0

Page 16: m8-binary-tree.ppt

Level

Level 3

Object

Number Throwable OutputStream

Integer Double Exception FileOutputStream

RuntimeException

Level 4

Level 2

Level 1

Level 3

Level 4

Level 2

Level 1

Page 17: m8-binary-tree.ppt

17

Contoh Tree (Pohon)

Level 0

Level 1

Level 2

Level 3

Daun/Leaf

R

S T

X VU W

Y Z

Root/Akar

Page 18: m8-binary-tree.ppt

Istilah Tree (Pohon)

Page 19: m8-binary-tree.ppt

Latihan

Ancestor (F)?Descendant (B)?Parent (I)?Child (C)?Sibling (G)?Size?Height?Root?Leaf?Degree (C)?

Page 20: m8-binary-tree.ppt

Tree (Pohon)

• Dimana,Ancestor (F) = C,ADescendant (B) = D,EParent (I) = HChild (A) = B,CSibling (F) = G,HSize = 9Height = 3/4Root = ALeaf = D,E,F,G,IDegree (C) = 3

Page 21: m8-binary-tree.ppt

Binary Tree

Page 22: m8-binary-tree.ppt

Gambar Binary Trees

Page 23: m8-binary-tree.ppt

Binary Tree

• Tiap node pada binary tree hanya boleh memiliki paling banyak dua child.

• Sehingga hanya ada dua subtree pada binary tree yang disebut sebagai left dan right subtrees.

Page 24: m8-binary-tree.ppt

Tree dan Binary Tree

• Pada binary tree nilai degree tidak lebih dari 2, sedangkan pada tree tidak terbatas.

• Sub tree pada binary harus terurut (ordered), sedangkan pada tree tidak (un-ordered).

Page 25: m8-binary-tree.ppt

Jenis Binary Tree

• Berdasarkan subtree binary tree dibedakan menjadi 4 jenis:– Full Binary Tree– Complete Binary Tree– Incomplete Binary Tree (Unbalanced

Tree)– Skewed Binary Tree

Page 26: m8-binary-tree.ppt

Jenis Tree(Full Binary Tree)

• Semua node (kecuali leaf) memiliki nol atau 2 anak dan tiap subtree memiliki panjang path yang sama.

• Disebut juga maximum binary tree.

Page 27: m8-binary-tree.ppt

Maximum Binary Tree

Page 28: m8-binary-tree.ppt

Jenis Tree(Complete Binary Tree)

• Seluruh node sebelah kiri terisi seluruhnya. Node sebelah kanan pada level n-1 ada yang kosong.

Page 29: m8-binary-tree.ppt

Complete Binary Tree

H

D K

B F J L

A C E G I

Page 30: m8-binary-tree.ppt

Incomplete Binary Tree

Gambar a Gambar b

Page 31: m8-binary-tree.ppt

Jenis Tree(Skewed Binary Tree)

• Binary tree yang semua nodenya (kecuali leaf) hanya memiliki satu anak.

• Disebut juga minimum binary tree.

Right Skewed Left Skewed

Page 32: m8-binary-tree.ppt

Binary Tree Representation

Page 33: m8-binary-tree.ppt

Representation

• Array representation• Linked list representation

Page 34: m8-binary-tree.ppt

ADT BinaryTree

public interface BinaryTree{ public boolean isEmpty(); public Object root(); public void makeTree(Object root, Object left, Object right); public BinaryTree removeLeftSubtree(); public BinaryTree removeRightSubtree(); public void preOrder(Method visit); public void inOrder(Method visit); public void postOrder(Method visit); public void levelOrder(Method visit);}

Page 35: m8-binary-tree.ppt

Array Representation

Page 36: m8-binary-tree.ppt

Struktur Data - Tree 36

Akses Elemen

• Posisi node dapat ditentukan berdasarkan rumus berikut :– Anak kiri dari node i berada pada indeks

: 2*i+1– Anak kanan dari node i berada pada

indeks : 2*i+2

Page 37: m8-binary-tree.ppt

Penambahan array size

• 1 node (root) = 20

• Root + node pada level 1 = 20 +21

• Root + node pada level 1 & 2 = 20

+21+22

• Root + node pada level 1,2,3 = 20

+21 +22 +23

• Root + node pada level 1,2,..n=20+21+22+...+2n

Page 38: m8-binary-tree.ppt

Array Representation

tree[]0 5 10

a b c d e f g h i j

b

a

c

d e f g

h i j

1

2 3

4 5 6 7

8 9 10

0 5 10

2 3

4 5 6 7

8 9 10

Page 39: m8-binary-tree.ppt

Right-Skewed Binary Tree

a

b

1

3

c7

d15

tree[]0 5 10

a - b - - - c - - - - - - -15d

1

37

15

0 5 10 15

Page 40: m8-binary-tree.ppt

Linked List Representation

Page 41: m8-binary-tree.ppt

Class BinaryTreeNode

class BinaryTreeNode

{

Object element;

BinaryTreeNode leftChild; // left subtree

BinaryTreeNode rightChild;// right subtree

// constructors and any other methods come here

}

Page 42: m8-binary-tree.ppt

Contoh Representasi Linked List

a

cb

d

f

e

g

hleftChildelementrightChild

root

leftChildelementrightChild

root

Page 43: m8-binary-tree.ppt

Binary Tree Traversal

Page 44: m8-binary-tree.ppt

Definisi

• Penelusuran seluruh node pada binary tree.

• Metode :– Preorder– Inorder– Postorder– Level order

Page 45: m8-binary-tree.ppt

Preorder Traversal

public static void preOrder(BinaryTreeNode t){ if (t != null) { visit(t); preOrder(t.leftChild); preOrder(t.rightChild); }}

Page 46: m8-binary-tree.ppt

PreOrder Traversal

• Preorder traversal1. Cetak data pada root2. Secara rekursif mencetak seluruh data

pada subpohon kiri3. Secara rekursif mencetak seluruh data

pada subpohon kanan

Page 47: m8-binary-tree.ppt

Preorder Example (visit = print)

a b c

Page 48: m8-binary-tree.ppt

Preorder Example (visit = print)

a b d g h e i c f j

Page 49: m8-binary-tree.ppt

Preorder Of Expression Tree

Gives prefix form of expression!

/ * + a b - c d + e f

Page 50: m8-binary-tree.ppt

Inorder Traversal

public static void inOrder(BinaryTreeNode t){ if (t != null) { inOrder(t.leftChild); visit(t); inOrder(t.rightChild); }}

Page 51: m8-binary-tree.ppt

InOrder Traversal

• Inorder traversal1.Secara rekursif mencetak seluruh data

pada subpohon kiri 2.Cetak data pada root3.Secara rekursif mencetak seluruh data

pada subpohon kanan

Page 52: m8-binary-tree.ppt

Inorder Example (visit = print)

a

b c

b a c

Page 53: m8-binary-tree.ppt

Inorder Example (visit = print)

g d h b e i a f j c

Page 54: m8-binary-tree.ppt

Inorder By Projection (Squishing)

a

b c

d ef

g h i j

g d h b e i a f j c

Page 55: m8-binary-tree.ppt

Inorder Of Expression Tree

Gives infix form of expression (sans parentheses)!

ea + b * c d / + f-

Page 56: m8-binary-tree.ppt

Postorder Traversal

public static void postOrder(BinaryTreeNode t){ if (t != null) { postOrder(t.leftChild); postOrder(t.rightChild); visit(t); }}

Page 57: m8-binary-tree.ppt

Postorder Traversal

• Postorder traversal1.Secara rekursif mencetak seluruh data

pada subpohon kiri2.Secara rekursif mencetak seluruh data

pada subpohon kanan3.Cetak data pada root

Page 58: m8-binary-tree.ppt

Postorder Example (visit = print)

a

b c

b c a

Page 59: m8-binary-tree.ppt

Postorder Example (visit = print)

g h d i e b j f c a

Page 60: m8-binary-tree.ppt

Postorder Of Expression Tree

Gives postfix form of expression!

a b + c d - * e f + /

Page 61: m8-binary-tree.ppt

Traversal Applicationsa

b c

d ef

g h i j

• Make a clone.

• Determine height.

•Determine number of nodes.

Page 62: m8-binary-tree.ppt

Level Order

while (t != null){ visit t and put its children on a FIFO queue; remove a node from the FIFO queue and call it t; // remove returns null when queue is empty}

Let t be the tree root.

Page 63: m8-binary-tree.ppt

Latihan

• Telusuri pohon biner berikut dengan menggunakan metode pre, in, post, dan level traversal.

Page 64: m8-binary-tree.ppt

Latihan 1

a. b.

+

*

3 5

-

2 /

8 4

Page 65: m8-binary-tree.ppt

Latihan 2

Page 66: m8-binary-tree.ppt

Level-Order Example (visit = print)

a

b c

d ef

g h i j

a b c d e f g h i j

Page 67: m8-binary-tree.ppt

Contoh : Pohon Ekspresi

Page 68: m8-binary-tree.ppt

PreOrder, PostOrder, InOrder

• Pre-order :– Node, left, right– Ekspresi Prefix : ++a*bc*+*defg

• Post-order :– Node, left, right– Ekspresi Postfix : abc*+de*f+g*+

• In-order :– Node, left, right– Ekspresi Infix : a+b*c+d*e+f*g

Page 69: m8-binary-tree.ppt

Pustaka

• Sartaj Sahni , “Data Structures & Algorithms”, Presentation L20-24.

• Mitchell Waite, “Data Structures & Algorithms in Java”, SAMS, 2001