Tree
Binary Tree Tree yang punya anak tak lebih dari 2, yaitu kiri atau kanan
Binary Search Tree Yaitu binary tree yang data anak kiri < data root < data anak kanan
Representasi Array
Representasi Linked List
Insert data ke BST Algoritma Telusuri tree, cari tempat yang cocok untuk data yang mau dimasukkan Ketika sampai di tempat yang cocok, data yang mau dimasukkan dibandingkan dengan parent, kalau lebih kecil maka taruh di sisi kiri, kalau lebih besar taruh di sisi kanan
Insert data ke BST Taruh dimana? 55
Insert data ke BST Taruh dimana? 20 55
Insert data ke BST 55 20
Traversal / Kunjungan Traversal : Mengunjungi setiap node pada tree Ada tiga cara mengunjungi node-node pada suatu tree : Preorder : root, kiri, kanan Inorder : kiri, root, kanan Postorder : kiri, kanan, root
Preorder : root, kiri, kanan B D C E F G A B D C E F G H A B D E C F G A B D G H C E F
Buat program untuk menelusuri tree secara preorder dan postorder Inorder : kiri, root, kanan void inorder(struct tnode *p) { if(p != NULL) inorder(p->lchild); printf("%d\t",p->data); inorder(p->rchild); } A B D C E F G H B G D H A E C F Buat program untuk menelusuri tree secara preorder dan postorder
Buat program untuk menelusuri tree secara preorder dan postorder
Postorder : kiri, kanan, root B D C E F G H G H D B E F C A
Traversal Z,A,Q,P,Y,X,C,B = Preorder root, kiri, kanan Q,A,Z,Y,P,C,X,B = Inorder kiri, root, kanan Z,A,P,X,B,C,Y,Q = postorder kiri, kanan, root
70 60 85 40 65 20 Inorder : kiri root kanan 20 40 60 65 70 85 void inorder(struct tnode *p) { if(p != NULL) inorder(p->lchild); printf("%d\t",p->data); inorder(p->rchild); } 70 60 85 40 65 20 Inorder : kiri root kanan 20 40 60 65 70 85
70 60 85 40 65 20 Preorder : root, kiri, kanan 70 60 40 20 65 85 void preorder(struct tnode *p) { if(p != NULL) printf("%d\t",p->data); preorder(p->lchild); preorder(p->rchild); } 70 60 85 40 65 20 Preorder : root, kiri, kanan 70 60 40 20 65 85
70 60 85 40 65 20 Postorder : kiri, kanan, root 20 40 65 60 85 70 void postorder(struct node *p) { if(p != NULL) { postorder(p->lchild); postorder(p->rchild); printf("%d\t",p->data); } 70 60 85 40 65 20 Postorder : kiri, kanan, root 20 40 65 60 85 70
Menghitung node pada tree int count(struct tnode *p) { if( p == NULL) return(0); else if( p->lchild == NULL && p->rchild == NULL) return(1); else return(1 + (count(p->lchild) + count(p->rchild))); } 70 60 85 40 65 20