binary tree

15
Rangga Juniansyah

Upload: kiefer

Post on 05-Jan-2016

65 views

Category:

Documents


0 download

DESCRIPTION

Binary Tree. Rangga Juniansyah. 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. - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: Binary Tree

Rangga Juniansyah

Page 2: Binary Tree

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.

Page 3: 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.

Page 4: Binary Tree

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.

Page 5: Binary Tree

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.

Page 6: Binary Tree

*

-+

a /

cb

d *

e f

Ungkapan Aritmatika

Hasil :1.PreOrder : *+a/bc-d*ef2.InOrder : a+b/c*d-e*f3.PostOrder : abc/+def*-*

Page 7: Binary Tree

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

Page 8: Binary Tree

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

Page 9: Binary Tree

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;

}

Page 10: Binary Tree

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

}}

Page 11: Binary Tree

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;

}}

Page 12: Binary Tree

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

Page 13: Binary Tree

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

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

cout<<endl;cout<<endl;

getch();return 0;

}

Page 14: Binary Tree

M

LE

IO

D

Page 15: Binary Tree

M

LE

IO

D

BA

U