Anda di halaman 1dari 14

Binary Tree

Euis Marlina, S.Kom

Email : euismarlina@gmail.com
http://euismarlina.edublogs.org
HP : 08179424319

Mata Kuliah Struktur Data - 2008


Pengantar

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

Mata Kuliah Struktur Data - 2008


Binary Tree

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

Mata Kuliah Struktur Data - 2008


Kunjungan Pohon

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

Mata Kuliah Struktur Data - 2008


Penempatan Simpul

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

Mata Kuliah Struktur Data - 2008


Contoh Pohon Biner

Ungkapan Aritmatika
Hasil :
2.PreOrder : *+a/bc-d*ef
*
3.InOrder : a+b/c*d-e*f
4.PostOrder : abc/+def*-*
-
+

d *
a /

e f

b c

Mata Kuliah Struktur Data - 2008


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

Mata Kuliah Struktur Data - 2008


Contoh Program

#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;

Mata Kuliah Struktur Data - 2008


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

Mata Kuliah Struktur Data - 2008


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

Mata Kuliah Struktur Data - 2008


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

Mata Kuliah Struktur Data - 2008


//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);

Mata Kuliah Struktur Data - 2008


cout<<endl;
cout<<"Tampilan secara InOrder : ";
inOrder(kelapa);

cout<<endl;
cout<<"Tampilan secara PostOrder : ";
postOrder(kelapa);

cout<<endl;
cout<<endl;

getch();
return 0;
}

Mata Kuliah Struktur Data - 2008


Tampilan Program

L
E

O
I

Mata Kuliah Struktur Data - 2008