Makalah Kunjungan Binary Tree

28
KUNJUNGAN PADA POHON BINER TUGAS KULIAH Diajukan untuk memenuhi salah satu tugas mata kuliah Struktur Data. Disusun Oleh : 1 . Muhammad Iqbal NIM 1215058 7 2 . Yekti Amurwani NIM 1215189 1 3 . Mohammad Hasan NIM 1215409 6 4 Emmie Astari NIM 1215363

Transcript of Makalah Kunjungan Binary Tree

Page 1: Makalah Kunjungan Binary Tree

KUNJUNGAN PADA

POHON BINER

TUGAS KULIAH

Diajukan untuk memenuhi salah satu tugas mata kuliah Struktur Data.

Disusun Oleh :

1. Muhammad Iqbal NIM 121505872. Yekti Amurwani NIM 121518913. Mohammad Hasan NIM 121540964. Emmie Astari NIM 121536395. Sonia Valencia NIM 12153778

Program Studi Manajemen Informatika

Akademi Manajemen Informatika dan Komputer Bina Sarana Informatika

Jakarta

2016

Page 2: Makalah Kunjungan Binary Tree

Kata Pengantar

Puji syukur Kehadirat Allah Tuhan Yang Maha Esa atas petunjuk, rahmat, dan hidayah-

Nya penulis dapat menyelesaikan makalah “Aplikasi Pohon Biner Lanjutan” dengan baik dan

dalam waktu yang telah ditetapkan.

Makalah ini disusun berdasarkan pengalaman dan ilmu yang kami peroleh selama

melaksanakan kegiatan belajar mengajar di BSI Jatiwaringin.

Makalah yang telah kami tulis ini dibuat dalam rangka memenuhi tugas mata kuliah Struktur

Data sebagai bahan pertanggung jawaban atas pemahaman selama kegiatan belajar mengajar ini.

Kami menyadari bahwa makalah ini tidak akan tersusun dengan baik tanpa adanya bantuan dari

pihak-pihak terkait. Oleh karena itu, pada kesempatan ini tidak lupa kami juga mengucapkan

terima kasih kepada :

1. Syuchrisyanti Ari S selaku dosen pengajar mata kuliah Perancangan Basis Data.

2. Teman kelas kami Nurhayati yang telah membantu kami dalam perancangan Teori

Pohon Biner.

Serta teman- teman yang telah bekerja sama menyelesaikan makalah

Semoga makalah ini dapat memberikan pengetahuan yang lebih luas kepada pembaca. Walaupun

makalah ini memiliki kelebihan dan kekurangan. Penyusun membutuhkan kritik dan saran dari

pembaca yang membangun. Terima kasih.

Jakarta,11 April 2016.

Penulis

Page 3: Makalah Kunjungan Binary Tree

DAFTAR ISIKata Pengantar............................................................................................iDAFTAR ISI.............................................................................................iiI PENDAHULUAN.........................................................................1

I.A LATAR BELAKANG........................................................................................................................1

I.B RUMUSAN MASALAH...................................................................................................................2

I.C TUJUAN PENULISAN.....................................................................................................................2

I.D Sistematika Penulisan..................................................................................................................2

II LANDASAN TEORI....................................................................4II.A Pengertian Binary Tree................................................................................................................4

II.B Jenis-Jenis Pohon Biner................................................................................................................4

II.C Kunjungan Pohon Biner...............................................................................................................6

II.D Contoh Pohon Biner dalam Kehidupan Sehari-hari......................................................................8

III PEMBAHASAN...........................................................................9III.A UMUM.........................................................................................................................................9

III.B SCRIPT..........................................................................................................................................9

III.C COMPILE....................................................................................................................................15

IV PENUTUP...................................................................................20IV.A Kesimpulan................................................................................................................................20

IV.B Saran..........................................................................................................................................20

IV.C Daftar Pustaka...........................................................................................................................20

Page 4: Makalah Kunjungan Binary Tree

BAB II PENDAHULUAN

I.A LATAR BELAKANG

Pohon Biner memberikan penjelasan tentang suatu simpul yang memiliki karaterisik paling banyak dua anak. Pemakaian pohon biner yang tepat di dalam proses pemrograman akan menghasilkan struktur data yang lebih jelas dan tepat sehingga salah satu bentuk struktur data tidak linear yang menggambarkan hubungan yang bersifat hirarkis (hubungan one to many) antara elemen-elemen. Tree bisa didefinisikan sebagai kumpulan simpul/node dengan satu elemen khusus yang disebut Root dan node lainnya terbagi menjadi himpunan-himpunan yang saling tak berhubungan satu sama lainnya (disebut subtree).Tree juga adalah suatu graph yang acyclic, simple, connected yang tidak mengandung loop.Sebuah binary search tree (bst) adalah sebuah pohon biner yang boleh kosong,dan setiap nodenya harus memiliki identifier/value. value pada semua node subpohon sebelah kiri adalah selalu lebih kecil dari value dari root, sedangkan value subpohon di sebelah kanan adalah sama atau lebih besar dari value pada root, masing– masing subpohon tersebut (kiri&kanan) itu sendiri adalah juga bst.

Struktur data bst sangat penting dalam struktur pencarian, misalkan, dalam kasus pencarian dalam sebuah list, jika list sudah dalam keadaan terurut maka proses pencarian akan sangat cepat, jika kita menggunanan list contigue dan melakukan pencarian biner. akan tetapi, jika kita ingin melakukan perubahan isi list (insert atau delete), menggunakan list contigue akan sangat lambat, karena proses insert dan delete dalam list continue butuh memindahkan banyak elemen setiap saat. mungkin kita bisa juga menggunakan linked-list, yang untuk operasi insert atau delete tinggal mengatur– atur pointer, akan tetapi pada n-linked list, kita tidak bisa melakukan pointer sembarangan setiap saat, kecuali hanya satu kali dengan kata lain hanya secara sequential.

Page 5: Makalah Kunjungan Binary Tree

I.B RUMUSAN MASALAH

Adapun bentuk masalah yang akan penulis bahas adalah :

1. Apa pengertian pohon biner?2. Apa saja jenis-jenis pohon biner?3. Apa pengertian Prefix, Infix, dan Postfix?4. Bagaimana implementasi aplikas pohon biner ?

I.C TUJUAN PENULISAN

Adapun tujuan penulisan makalah ini adalah :

1. Mahasiswa dapat memahami tentang Pohon Biner Lanjutan.2. Mahasiswa dapat memahami dan mampu merancang Pohon Biner Lanjutan.

I.D Sistematika Penulisan

Adapun sistematika penulisan makalah ini adalah sebagai berikut :

Page 6: Makalah Kunjungan Binary Tree

Daftar Isi

Kata Pengantar

I Pendahuluan

I.A Latar Belakang

I.B Rumusan Masalah

I.C Tujuan Penulisan

II. Landasan Teori

II.A Pengertian Binary Tree

II.B Jenis-Jenis Pohon Biner

II.C Kunjungan Pada Pohon Biner

II.D Contoh Pohon Biner dalam Kehidupan Sehari-hari

III. Pembahasan

III.A Umum

III.B Script

III.C Compile

IV. Penutup

IV.A Kesimpulan

IV.B Saran

IV.C Daftar Pustaka

Page 7: Makalah Kunjungan Binary Tree

II LANDASAN TEORI

II.A Pengertian Binary Tree

Pohon biner merupakan jenis pohon m-er (m-ary tree)yang simpul cabangnya memiliki maksimal dua anak. Karena anak dari suatu cabang maksimalnya hanya dua, maka anak cabang ini namakan vabang kiri atau cabang kanan.

Karakteristik Pohon Biner (Binary Tree) :

1. Setiap simpul paling banyak hanya memiliki dua buah anak

2. Derajat tertinggi darisetiap simpul adalah dua

3. Dibedakan antara cabang kiri dan cabang kanan

Proses traversing dari sebuah binary tree artinya melakukan kunjungan pada setiap simpul pada suatu pohon biner tepat satu kali. Dengan melakukan kunjungan secara lengkap, kita akan memperoleh informasi secara linear yang tersimpan dalam pohon biner. Secara linear dimaksudkan secara garis lurus atau searah. Dalam melakukan kunjungan pada sebuah pohon biner, kita akan memperlakukan hal yang sama pada setiap simpul pada cabang-cabangnya.

II.B Jenis-Jenis Pohon Biner

a) Full Binary Tree

Binary Tree yang tiap nodenya (kecuali leaf) memiliki dua child dan tiap subtree harus mempunyai panjang path yang sama.

Page 8: Makalah Kunjungan Binary Tree

b) Complete Binary Tree

Mirip dengan Full Binary Tree, namun tiap subtree boleh memiliki panjang path yang berbeda. Node kecuali leaf memiliki 0 atau 2 child.

c) Skewed Binary Tree

Yakni Binary Tree yang semua nodenya (kecuali leaf) hanya memiliki satu child.

Page 9: Makalah Kunjungan Binary Tree

II.C Kunjungan Pohon Biner

Pembagian Pada Kunjungan Pohon Biner

Kunjungan pada pohon biner merupakan salah satu operasi yang sering di lakukan pada suatu pohon biner tepat satu kali (binary tree transversal). Binary tree dapat di implementasikan dalam C++. Operasi ini di bagi menjadi 3 bentuk :

1.) Kunjungan secara PreOrder (Depth First Order)

Mempunyai urutan :

a.Cetak isi simpul yang dikunjungi (simpul akar)

b.Kunjungi cabang kiri

o Jika kiri bukan kosong (tidak Null) mulai lagi dari langkah pertama,terapkan untuk kiri tersebut.

o Jika kiri kosong (Null), lanjutkan ke langkah ke tiga.

c.Kunjungi cabang kanan

o Jika kanan bukan kosong (tidak Null) mulai lagi dari langkah pertama,terapkan untuk kanan tersebut.

o Jika kanan kosong (Null), proses untuk node ini selesai,tuntaskan proses yang sama untuk node yang dikunjungi sebelumnya.

2.) Kunjungan Secara InOrder (Symmetric Order)

Mempunyai urutan :

a. Kunjungi cabang kiri

o Jika kiri bukan kosong (tidak Null) mulai lagi dari langkah pertama, terapkan untuk kiri tersebut.

o Jika kiri kosong (Null), lanjut ke langkah kedua.

b. Cetak isi simpul yang dikunjungi (simpul akar)

c. Kunjungi cabang kanan.

o Jika kanan bukan kosong (tidak Null) mulai lagi dari langkah pertama, terapkan untuk kanan tersebut.

o Jika kanan kosong(Null), proses untuk node ini selesai. Tuntaskan proses yang sama untuk node yang dikunjungi sebelumnya.

Page 10: Makalah Kunjungan Binary Tree

3.) Kunjungan secara PostOrder

Mempunyai urutan :

a. Kunjungi cabang kiri

o Jika kiri bukan kosong (tidak Null) mulai lagi dari langkah pertama, terapkan untuk kiri tersebut.

o Jika kiri kosong (Null),lanjut kelangkah kedua.

b. Kunjungi cabang kanan

o Jika kanan bukan kosong (tidak Null) mulai lagi dari langkh pertama,terapkan untuk kanan tersebut.

o Jika kanan kosong (Null),proses untuk node ini selesai, tuntaskan proses yang sama untuk node yang dikunjungi sebelumnya.

c. Cetak isi simpul yang dikunjungi (simpul akar)

Pada ketiga cara kunjungan diatas ,kunjungan kecabang kiri dilakukan terlebih dahulu, baru kemudian kunjungan kecabang kanan. Dengan orientasi semacam ini ketiga kunjungan diatas disebut dengan left to right oriented atau LRO. Jika kunjungan ke cabang kanan dilakukan lebih dahulu baru kemudian kunjungan kecabang kiri, maka orientasi semacam ini disebut right to left oriented atau RLO.

4.) Level Order

Selain kunjungan yang dijelaskan diatas, masih ada satu macam kunjungan lagi yaitu kunjungan Level Order.

Kunjungan dimulai dari simpul yang ada pada tingkat 1 (akar), diteruskan pada simpul tingkat 2,tingkat 3 dan seterusnya.

Secara singkat kunjungan level order ini dapat dijelaskan sebagai berikut :

1. Dimulai dengan memasukan akar ke dalam antrian

2. Kemudian mengeluarkan akar tersebut dari antrian.

Pada saat akar tersebut dikeluarkan dari antrian, cabang kiri dankana secara berturut-turut dimasukan kedalam antrian. Dengan kata lain , jika suatu elemen dikeluarkan dari antrian , maka cabang kiri dan kanan dari elemen yang baru saja dikeluarkan dimasukan kedalam antrian.

Page 11: Makalah Kunjungan Binary Tree

II.D Contoh Pohon Biner dalam Kehidupan Sehari-hari

Dalam kehidupan sehari-hari, tree dapat dilihat dari pohon silsilah keluarga. Tingkat yang tertinggi disebut juga sebagai root.

Untuk lebih jelasnya lihat gambar 6.1 merupakancontoh dari sebuah tree.

Jika kita memperhatikan gambar ditas, sebenarnya yang disebut dengan simpul (node atau vertex) adalah elemen pohon yang berisi informasi / data dan petunjuk percabangan. Pada pohon diatas memiliki 15 simpul yang berisi informasi berupa huruf A, B, C, D sampai O lengkap dengan percabangannya. Akar / Root dari pohon diatas berisi huruf A.

Tingkat (level) suatu simpul ditentukan dengan pertama kali menentukan akar sebagai bertingkat 1. jika suatu simpul dinyatakan sebagai tingkat N, maka simpul-simpul yang merupakan anaknya dikatakan berada dalam tingkat N+1. pada pohon diatas merupakan tree dengan 5 level.

Page 12: Makalah Kunjungan Binary Tree

III PEMBAHASAN

III.A UMUM

Berdasarkan rumusan masalah yang sudah kami paparkan sebelumnya, kami membuat sebuah rancangan struktur dan sistem Pohon Biner Lanjutan. Selain itu, kami lampirkan script dan setelah compile.

III.B SCRIPT

#include <iostream.h>

#include <stdio.h>

#include <conio.h>

struct tree_node{

int data;

tree_node *left;

tree_node *right;

};

tree_node *root;

int tmp_tree[20];

bool isEmpty(){

return root==NULL;

}

void insert ( int d ) {

tree_node *tree = new tree_node;

tree_node *parent;

Page 13: Makalah Kunjungan Binary Tree

tree->data = d;

tree->left = NULL;

tree->right = NULL;

parent = NULL;

if( isEmpty() ) {

root = tree;

} else {

tree_node* curr;

curr = root;

while ( curr!=NULL ) {

parent = curr;

if ( tree->data > curr->data )

{ curr = curr->right; }

else

{ curr = curr->left; }

}

If ( tree->data < parent->data )

{ parent->left = tree; }

else

{ parent->right = tree; }

}

}

void preorder ( tree_node* p ) {

if ( p!=NULL ) {

cout<<" "<<p->data<<" ";

if( p->left )

{ preorder( p->left ); }

if( p->right )

Page 14: Makalah Kunjungan Binary Tree

{ preorder( p->right ); }

}

else

return;

}

void inorder( tree_node* p ) {

if ( p!=NULL ) {

if ( p->left )

{ inorder( p->left ) ; }

cout<<" "<<p->data<<" ";

if ( p->right )

{ inorder(p->right) ; }

}

else

return;

}

void postorder(tree_node* p){

if(p!=NULL){

if(p->left)

{postorder(p->left);}

if(p->right)

{postorder(p->right);}

cout<<" "<<p->data<<" ";

}

else

return;

}

void print_tree(){

Page 15: Makalah Kunjungan Binary Tree

for ( int i = 0; i < 20; i++ ){

if (tmp_tree[i]!=0){

cout<<tmp_tree[i]<<", ";

}

}

cout<<endl;

}

void print_order(){

cout<<"BinaryTree: ";print_tree();cout<<endl;

cout<<"InOrder : ";inorder(root);cout<<endl;

cout<<"PostOrder : ";postorder(root);cout<<endl;

}

//-------------------------------------------------------

int main(){

root=NULL;

int ch,tmp,idx=0;

while(1){

clrscr();

cout<<endl;

cout<<"Menu Utama Operasi Pohon Biner"<<endl;

cout<<"--------------------"<<endl;

cout<<"1. Insert/Tambah Data"<<endl;

cout<<"2. Kunjungan PreOrder"<<endl;

cout<<"3. Kunjungan InOrder"<<endl;

cout<<"4. Kunjungan PostOrder"<<endl;

cout<<"0. Exit"<<endl;

cout<<"--------------------"<<endl;

cout<<"BinaryTree: ";print_tree();cout<<endl;

Page 16: Makalah Kunjungan Binary Tree

cout<<"--------------------"<<endl;

cout<<"Pilihan Anda : ";

cin>>ch;

cout<<endl;

switch(ch) {

case 0 : return 0;

break;

case 1 :

cout<<"Masukan Data *Harus angka : ";

cin>>tmp;

tmp_tree[idx]=tmp;

idx=idx+1;

insert(tmp);

break;

case 2 : cout<<endl;

cout<<"Kunjungan PreOrder"<<endl;

cout<<"---------------"<<endl;

cout<<"PreOrder : ";preorder(root);cout<<endl;

getch();

break;

case 3 : cout<<endl;

cout<<"Kunjungan InOrder"<<endl;

cout<<"---------------"<<endl;

cout<<"PreOrder : ";inorder(root);cout<<endl;

getch();

break;

case 4 : cout<<endl;

cout<<"Kunjungan PostOrder"<<endl;

Page 17: Makalah Kunjungan Binary Tree

cout<<"---------------"<<endl;

cout<<"PreOrder : ";postorder(root);cout<<endl;

getch();

break;

default: cout<<"Pilihan yang Anda Masukkan salah!"<<endl;

getch();

break;

}

}

}

Page 18: Makalah Kunjungan Binary Tree

III.C COMPILE

Menu awal :

Konten KeteranganInsert / Tambah Data Sebagai pilihan untuk menambahkan data pada

binary tree.Kunjungan PreOrder Sebagai pilihan untuk membuat kunjungan preorder

dari binary tree.Kunjungan InOrder Sebagai pilihan untuk membuat kunjungan inorder

dari binary treeKunjungan PostOrder Sebagai pilihan untuk membuat kunjungan postorder

dari binary tree.Exit Sebagai pilihan untuk keluar program.Binary Tree Untuk menampilkan data dari binary tree.Pilihan Anda Sebagai inputan pilihan pengguna.

Tabel Keterangan Menu Awal.

Page 19: Makalah Kunjungan Binary Tree

Insert data :

Gambar diatas adalah program jika diinputkan pilihan 1 (Insert / Tambah Data) dan diinputkan nilai 9 untuk di insert kedalam pohon biner.

Gambar diatas adalah program jika data sudah diinputkan data pada pohon biner, dan gambaran pohon biner yang sudah diinputkan dengan data dumy.

Page 20: Makalah Kunjungan Binary Tree

Kunjungan :o PreOrder

Gambar diatas adalah program jika diinputkan pilihan 2 (Kunjungan PreOrder) untuk dibuatkan kunjungan preorder, dan gambaran pohon biner kunjungan PreOrder.

Page 21: Makalah Kunjungan Binary Tree

o InOrder

Gambar diatas adalah program jika diinputkan pilihan 3 (Kunjungan InOrder) untuk dibuatkan kunjungan InOrder, dan gambaran pohon biner kunjungan InOrder.

Page 22: Makalah Kunjungan Binary Tree

o PostOrder

Gambar diatas adalah program jika diinputkan pilihan 3 (Kunjungan PostOrder) untuk dibuatkan kunjungan PostOrder, dan gambaran pohon biner kunjungan PostOrder.

Page 23: Makalah Kunjungan Binary Tree

IV PENUTUP

IV.A Kesimpulan

Dengan adanya Diagram yang penulis rancang dapat diambil kesimpulan sebagai berikut

1. Mahasiswa mengetahui dan memahami Kunjungan pada Pohon Biner2. Mahasiswa mampu merancang Kunjungan Pada Pohon Biner3. Mahasiswa mengetahui konsep Kunjungan pada Pohon Biner4. Mahasiswa mampu bekerja sama dalam kelompok kerja untuk menyelesaikan tugas

project sesuai dengan tema yang diberikan5. Mahasiswa mampu membuat dan mempresentasikan project dengan uraian materi

sebelumnya dan di implementasikan kedalam bahasa C++

IV.B Saran

Untuk mendapatkan hasil yang optimal, beberapa hal yang perlu diperhatikan :

1. Perlunya memahami konsep dari kunjungan pada Pohon Biner itu sendiri

2. Memeriksa kembali kunjungan Prefix, Infix dan Postfix

3. Melakukan maintance / perawatan secara berkala pada sistem software maupun hardware

agar sistem dapat terus berfungsi dengan baik.

4. “Back Up” data sangat diperlukan untuk menghindari kehilangan data karena kerusakan

media penyimpanan yang dapat timbul.

IV.C Daftar Pustaka

1. Sumber Sinau, Algoritma dan Struktur Data Tree,

https://sumbersinau.wordpress.com/2013/04/30/algoritma-dan-struktur-data-tree/

2. Ibrahim Manorek, Pohon Biner,http://ibrahimmanorek.blogspot.co.id/2011/03/1.html

3. Aulia Zurra, Makalah Binary Tree,https://www.scribd.com/doc/94109071/Makalah-Binary-Tree