Presentasi sedang didownload. Silahkan tunggu

Presentasi sedang didownload. Silahkan tunggu

Binary Tree.

Presentasi serupa


Presentasi berjudul: "Binary Tree."— Transcript presentasi:

1 Binary Tree

2 Sub Topik Penjelasan Tree Istilah pada tree Binary Tree
Jenis Binary Tree ADT Binary tree

3 Tree (Pohon)

4 Real World leaves branches root

5 Computer Scientist’s View
root leaves branches nodes

6 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.

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

8 Contoh Tree Mis. : Struktur organisasi sebuah perusahaan

9 Contoh Tree Mis. : Daftar isi sebuah buku

10 Contoh Tree Mis. : File system

11 Tree (Pohon) Root adalah node yang memiliki hirarki tertinggi.
Subtree (pohon anak) adalah beberapa node yang tersusun hirarki yang ada dibawah root.

12 Root and Subtrees root Object Number Throwable OutputStream Integer
Double Exception FileOutputStream RuntimeException

13 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.

14 Leaves Object OutputStream Number Throwable FileOutputStream Integer
Double Exception RuntimeException

15 Node Degree Object Number Throwable OutputStream Integer Double
Exception FileOutputStream RuntimeException 3 2 1 1 1

16 Level Level 3 Object Number Throwable OutputStream Integer Double
Exception FileOutputStream RuntimeException Level 4 Level 2 Level 1 Level 1 Level 2 Level 3 Level 4

17 Contoh Tree (Pohon) R Root/Akar Level 0 S T Level 1 X U V W Level 2
Daun/ Leaf Level 3 Y Z 17

18 Istilah Tree (Pohon)

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

20 Tree (Pohon) Dimana, Ancestor (F) = C,A Descendant (B) = D,E
Parent (I) = H Child (A) = B,C Sibling (F) = G,H Size = 9 Height = 3/4 Root = A Leaf = D,E,F,G,I Degree (C) = 3

21 Binary Tree

22 Gambar Binary Trees

23 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.

24 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).

25 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

26 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.

27 Maximum Binary Tree

28 Jenis Tree (Complete Binary Tree)
Seluruh node sebelah kiri terisi seluruhnya. Node sebelah kanan pada level n-1 ada yang kosong.

29 Complete Binary Tree H D K B F J L I A C E G

30 Incomplete Binary Tree
Gambar a Gambar b

31 Jenis Tree (Skewed Binary Tree)
Binary tree yang semua nodenya (kecuali leaf) hanya memiliki satu anak. Disebut juga minimum binary tree. Left Skewed Right Skewed

32 Binary Tree Representation

33 Representation Array representation Linked list representation

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

35 Array Representation

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 Struktur Data - Tree

37 Penambahan array size 1 node (root) = 20
Root + node pada level 1 = Root + node pada level 1 & 2 = Root + node pada level 1,2,3 = Root + node pada level 1,2,..n= n

38 Array Representation tree[] b a c d e f g h i j 1 2 3 4 5 6 7 8 9 10 2
5 10 a b c d e f g h i j 5 10

39 Right-Skewed Binary Tree
1 a b 1 3 c 7 d 15 3 7 15 tree[] 5 10 a - b c 15 d 5 10 15

40 Linked List Representation

41 Class BinaryTreeNode class BinaryTreeNode { Object element;
BinaryTreeNode leftChild; // left subtree BinaryTreeNode rightChild;// right subtree // constructors and any other methods come here }

42 Contoh Representasi Linked List
b d f e g h leftChild element rightChild root root leftChild element rightChild

43 Binary Tree Traversal

44 Definisi Penelusuran seluruh node pada binary tree. Metode : Preorder
Inorder Postorder Level order

45 Preorder Traversal public static void preOrder(BinaryTreeNode t) {
if (t != null) visit(t); preOrder(t.leftChild); preOrder(t.rightChild); } t is the root of the subtree being traversed.

46 PreOrder Traversal Preorder traversal Cetak data pada root
Secara rekursif mencetak seluruh data pada subpohon kiri Secara rekursif mencetak seluruh data pada subpohon kanan

47 Preorder Example (visit = print)
b c a b c

48 Preorder Example (visit = print)
b c d e f g h i j During the traversal, t starts at the root, moves to the left child b of the root, then to the left child d of b. When the traversal of the left subtree of b is complete, t, once again, points to the node b. The t moves into the right subtree of b. When the traversal of this right subtree is complete, t again points to b. Following this, t points to a. We see that t points to every node in the binary tree three times – once when you get to the node from its parent (or in the case of the root, t is initially at the root), once when you return from the left subtree of the node, and once when you return from the node’s right subtree. Of these three times that t points to a node, the node is visited the first time. a b d g h e i c f j

49 Preorder Of Expression Tree
+ a b - c d e f * / / * + a b - c d + e f Gives prefix form of expression!

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

51 InOrder Traversal Inorder traversal
Secara rekursif mencetak seluruh data pada subpohon kiri Cetak data pada root Secara rekursif mencetak seluruh data pada subpohon kanan

52 Inorder Example (visit = print)
b c b a c

53 Inorder Example (visit = print)
b c d e f g h i j g d h b e i a f j c

54 Inorder By Projection (Squishing)
a b c d e f g h i j g d h b e i a f j c

55 Inorder Of Expression Tree
+ a b - c d e f * / e a + b * c d / f - Gives infix form of expression (sans parentheses)!

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

57 Postorder Traversal Postorder traversal
Secara rekursif mencetak seluruh data pada subpohon kiri Secara rekursif mencetak seluruh data pada subpohon kanan Cetak data pada root

58 Postorder Example (visit = print)
b c b c a

59 Postorder Example (visit = print)
b c d e f g h i j g h d i e b j f c a

60 Postorder Of Expression Tree
+ a b - c d e f * / a b + c d - * e f + / Gives postfix form of expression!

61 Traversal Applications
b c d e f g h i j Make a clone using postorder traversal … clone the left subtree, clone the right subtree, clone the root in the visit step. Determine height using postorder traversal … determine the height of the left subtree, determine the height of the right subtree, in the visit step add 1 to the max of the already determined heights of the left and right subtrees. Determine number of nodes using preorder, inorder, or postorder traversal … initialize a counter to 0, add 1 to the counter in the visit step. Make a clone. Determine height. Determine number of nodes.

62 Level Order Let t be the tree root. 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 }

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

64 Latihan 1 a. b.

65 Latihan 2

66 Level-Order Example (visit = print)
b c d e f g h i j a b c d e f g h i j

67 Contoh : Pohon Ekspresi

68 PreOrder, PostOrder, InOrder
Node, left, right Ekspresi Prefix : ++a*bc*+*defg Post-order : Ekspresi Postfix : abc*+de*f+g*+ In-order : Ekspresi Infix : a+b*c+d*e+f*g

69 Pustaka Sartaj Sahni , “Data Structures & Algorithms”, Presentation L20-24. Mitchell Waite, “Data Structures & Algorithms in Java”, SAMS, 2001


Download ppt "Binary Tree."

Presentasi serupa


Iklan oleh Google