Silabi Mata Kuliah Statistika Teknik - E

advertisement
Rangga Juniansyah


Tree merupakan salah satu bentuk struktur
data tidak linear yang menggambarkan
hubungan yang bersifat hierarkis (hubungan
one to many) antara elemen-elemen.
Tree bisa didefinisikan sebagai kumpulan
simpul/node dengan elemen khusus yang
disebut Root.



Binary Tree (Pohon Biner) yaitu pohon yang setiap
simpul/node-nya paling banyak mempunyai dua
buah subpohon.
Contoh implementasi : untuk membuat pohon
silsilah keluarga, ungkapan aritmatika yang setiap
operatornya dipasang sebagai simpul pencabangan
dan operand-operandnya sebagai subpohon, dll.
Binary tree dapat diimplementasikan dalam C++
dengan menggunakan double linkedlist.




Ada 3 urutan dasar yang dapat digunakan
untuk mengunjungi pohon, yaitu :
PreOrder : cetak isi node yang dikunjungi, kunjungi
Left Child, kunjungi Right Child.
InOrder : kunjungi Left Child, cetak isi node yang
dikunjungi, kunjungi Right Child.
PostOrder : kunjungi Left Child, kunjungi Right
Child cetak isi node yang dikunjungi.

Simpul yang berisi informasi yang nilainya
lebih besar dari simpul atas (root) akan
ditempatkan sebagai cabang kanan, jika lebih
kecil dari simpul atas akan ditempatkan
sebagai cabang kiri.
Ungkapan Aritmatika
Hasil :
1. PreOrder : *+a/bc-d*ef
2. InOrder : a+b/c*d-e*f
3. PostOrder : abc/+def*-*
*
-
+
d
a
*
/
e
b
c
f



Dari hasil di atas dapat disimpulkan bahwa :
Kunjungan secara PreOrder akan
menghasilkan notasi Prefix
Kunjungan secara InOrder akan
menghasilkan notasi Infix
Kunjungan secara PostOrder akan
menghasilkan notasi Postfix
#include<iostream.h>
#include<conio.h>
#include<malloc.h>
#define nil NULL
struct nod
{
struct nod *left;
char data;
struct nod *right;
};
typedef struct nod NOD;
typedef NOD POKOK;
NOD *NodBaru(char item)
{
NOD *n;
n=(NOD *)malloc(sizeof(NOD));
if(n != NULL)
{
n->data=item;
n->left=NULL;
n->right=NULL;
}
return n;
}
void BinaPokok(POKOK **T)
{
*T=NULL;
}
bool PokokKosong(POKOK *T)
{
return ((bool)(T==NULL));
}
void TambahNod(NOD **p, char item)
{
NOD *n;
n=NodBaru(item);
*p=n;
}
void preOrder(POKOK *T)
{
if(!PokokKosong(T))
{
cout<<" "<<T->data;
preOrder(T->left);
preOrder(T->right);
}
}
void inOrder(POKOK *T)
{
if(!PokokKosong(T))
{
inOrder(T->left);
cout<<" "<<T->data;
inOrder(T->right);
}
}
void postOrder(POKOK *T)
{
if(!PokokKosong(T))
{
postOrder(T->left);
postOrder(T->right);
cout<<" "<<T->data;
}
}
//Program utama
int main()
{
POKOK *kelapa;
char buah;
BinaPokok(&kelapa);
TambahNod(&kelapa, buah='M');
TambahNod(&kelapa->left, buah='E');
TambahNod(&kelapa->left->right, buah='I');
TambahNod(&kelapa->right, buah='L');
TambahNod(&kelapa->right->right, buah='O');
TambahNod(&kelapa->right->right->left,
buah='D');
cout<<"Tampilan secara PreOrder : ";
preOrder(kelapa);
cout<<endl;
cout<<"Tampilan secara InOrder : ";
inOrder(kelapa);
cout<<endl;
cout<<"Tampilan secara PostOrder : ";
postOrder(kelapa);
cout<<endl;
cout<<endl;
getch();
return 0;
}
M
L
E
O
I
D
M
L
E
B
A
O
I
D
U
Download