Top 4 (Tree)
Top 4 (Tree)
Top 4 (Tree)
TOPIK 6
TREE (POHON)
I. Tujuan
Mahasiswa dapat memahami konsep dari tree.
Mahasiswa dapat mengaplikasikannya dalam program.
II. Alat yang dibutuhkan
1 set computer
III.Dasar Teori
Definisi Tree
Tree merupakan salah satu bentuk struktur data tidak linear yang menggambarkan
hubungan yang bersifat hierarkis (hubungan one to many) antara elemen-elemen. Tree biasa
didefinisikan sebagai kumpulan simpul atau node dengan satu elemen khusus yang disebut Root.
Node lainnya terbagi menjadi himpunan-himpunan yang saling tak berhubungan satu sama
lain(disebut Subtree). Untuk lebih jelasnya, di bawah ini akan diuraikan istilah-istilah umum
dalam tree:
Predecessor
Successor
Ancestor
Descendant
Parent
Child
Sibling
Subtree
Size
Level
Height
Root
Leaf
Degree
= C,A
= F,G
=B
= B,C
=G
=7
=1
=2
=A
= D, E ,F ,G
=2
Binary Tree
Binary Tree adalah tree dengan syarat bahwa tiap node hanya boleh memiliki maksimal
dua subtree dan kedua subtree tersebut harus terpisah. Sesuai dengan definisi tersebut, tiap node
dalam binary search tree hanya boleh memiliki paling banyak dua child. Berikut contohnya:
Binary Tree ini memiliki sifat di mana semua left child harus lebih kecil daripada right
child dan parentnya. Semua right child juga harus lebih besar dari left child serta parent-nya.
Binary search tree dibuat untuk mengatasi kelemahan pada binary tree biasa yaitu kesulitan
dalam searching/pencarian node tertentu dalam binary tree.
Untuk lebih jelasnya, dapat dilihat gambar berikut.
Struktur binary tree telah dibuat dengan deklarasi di atas. Tetapi itu semua hanya cetakannya
saja. Isi dari struktur tersebut belum di tentukan. Di bawah ini adalah potongan code untuk
membentuk akar (root) pada binary search tree:
void makeRoot (char data)
{
node=new tree;
node->left=NULL;
node->right=NULL;
node->parent=NULL;
node->data=data;
if(root==NULL)
{
//jika root belum ada, jadikan root
root=node;
}
else
{
printf(Root sudah ada!!!);
}
}
}
}
PreOrder
InOrder
PostOrder
Ketiga cara ini dilakukan dengan menggunakan Rekursi (Lihat lagi dasprog tentang rekursi).
PreOrder
Metode:
Kunjungi parent,jelajahi anak kiri jika ada. Setelah itu baru jelajahi
anak kanan jika ada
void viewPreOrder(tree *node)
{
if(node!=NULL)
{
//cetak data
printf(%c",node->data);
//ke kiri
if(node->left!=NULL) viewPreOrder(node->left);
//ke kanan
if(node->right!=NULL) viewPreOrder(node->right);
}
}
InOrder
Metode:
Tree sudah dibuat dan dapat dilihat, Berikutnya adalah bagaimana cara mencari node yang di
inginkan.
tree* findNode(tree *T, char data)
{
if(T==NULL)return NULL;
if(data<T->data)return findNode(T->left,data);
else if(data>T->data)return findNode(T->right,data);
else
return T;
}
Coba program-program diatas di rumah/kos, siapa tau assisten sengaja membuat sedikit salah
pada handout ini. Coba juga program-program lain yang diajarkan pada handout kuliah dan
topik-topik sebelumnya terutama tentang operasi file, pointer dan linked list. Ketiga topik
tersebut akan digunakan terus pada topik mendatang.
IV. Percobaan
1. Membuat tree dan mencoba berbagai macam viewnya(pre,in dan post).
V. Langkah Percobaan