Anda di halaman 1dari 16

LAPORAN PRAKTIKUM RESMI

TREE (LANJUTAN)
MEMBACA BINARY TREE



Disusun oleh :
Unggul Budi Suryanto
201301011

Dosen pengampu :
Yosef Murya Kusuma Ardhana.S.T., M.Kom




JURUSAN SISTEM INFORMASI
SEKOLAH TINGGI ILMU KOMPUTER YOS SUDARSO
PURWOKERTO
2014
BAB I
TEORI DASAR

1. Pengantar
. Membaca Binary Tree Level per Level urut nomor node.
Perhatikan binary tree yang diilustrasikan pada empat buah gambar berikut:

Binary tree diatas jika dibaca dan dicetak node per node, dengan pembacaan level per level
urut nomor node maka Akan tercetak A B C D E F G H I J K L M N O P Q


Binary tree diatas jika dibaca dan dicetak node per node, dengan pembacaan level per level
urut nomor node maka: Akan tercetak A B C D E G I J K N


Binary tree diatas jika dibaca dan dicetak node per node, dengan pembacaan level per level
urut nomor node maka Akan tercetak A B C E F G J K M N


Binary tree diatas jika dibaca dan dicetak node per node, dengan pembacaan level per level
urut nomor node maka Akan tercetak A B C E J K

Untuk menjelaskan algoritma ini, maka diperlukan sebuah array (yang diberi nama Q) karena
digunakan sebagai queue (antrian) bertipe pointer node, untuk mencatat alamat node-node.
Sebagai contoh, untuk binary tree yang diilustrasikan dengan Gambar (4), maka alamat node-
nodenya tersimpan dalam array pointer seperti digambarkan pada gambar dibawah ini.


















BAB II
PENJELASAN PROGRAM
.
/*
* 5.cpp
*
* Created on: 8 Okt 2014
* Author: unggul budi suryanto
*/



#include <iostream>
#include <malloc.h>
#include <conio.h>

using namespace std;


struct Node
{


struct Node *Left;
char INFO;
struct Node *Right;
};
typedef struct Node Simpul;
Simpul *P, *Q[51], *akar, *Current;
int i,j;
char X;

void Inisialisasi()
{
akar=NULL;
P=NULL;
}

void buatsimpul(char X)
{
P=(Simpul*)malloc(sizeof(Simpul));
if(P!=NULL)
{
P->INFO=X;
P->Left=NULL;
P->Right=NULL;
}
else
cout<<"simpul tidak dapat dibuat";
}

void BuatAkar()
{
if(akar==NULL)
{
if(P!=NULL)
{
akar=P;
}

else
{
cout<<"Simpul belum tersedia";

}
}
else
{
cout<<"Akar sudah tersedia";
}
}



int main()
{

Inisialisasi();
buatsimpul('A'); BuatAkar();
buatsimpul('B'); akar->Left=P;
buatsimpul('C'); akar->Right=P;
buatsimpul('G'); akar->Right->Left=P;
buatsimpul('E'); akar->Left->Left=P;
buatsimpul('F'); akar->Left->Right=P;
buatsimpul('M'); akar->Right->Right=P;

for (i=1;i<=50;i++)
{

Q[i]=NULL;
}
Q[1]=akar;
i=1;
j=1;
while (Q[i] != NULL)
{
Current=Q[i];
cout<<Current->INFO;
if(Current->Left != NULL)
{
j++;
Q[j]=Current->Left;
}
if(Current->Right != NULL)
{
j++;
Q[j]=Current->Right;
}
i++;

}
return 0;
}


Output dari program 1 adalah sebagai berikut :


Berikut penjelasan dari Listing program_1.cpp :

1. Tanda yang diawali dengan */ dan diakhiri dengan /* adalah script yang digunakan untuk
membuat sebuah komentar pada pemrograman C++ dan tidak berpengaruh dengan program
yang akan dijalankan
2. #include atau disebut sebagai pengarah preprocessor #include berfungsi untuk
menginstruksikan compiler untuk menyertakan berkas C++ sumber yang lain sebelum
kompilasi dimulai.
3. <iostream> adalah sebuah library yang dibutuhkan untuk fungsi input seperti cin>>var dan
output seperti cout<<var.
4.
struct Node
{
struct Node *Left;
char INFO;
struct Node *Right;


Adalah pendeklarasian tipedata abstrak struct bernama node.

5.
typedef struct Node Simpul;
Simpul *P, *Q[51], *akar, *Current;
int i,j;
char X;

Adalah pendeklarasian tipedataabstrak typedef struct bernama node simpul
6.
void Inisialisasi()
{
akar=NULL;
P=NULL;
}
Ini adalah pendeklarasian void menu bernama inisialisasi yang nantinya akan dipanggil dalam
menu utama dalam program tersebut.
7.
void buatsimpul(char X)
{
P=(Simpul*)malloc(sizeof(Simpul));
if(P!=NULL)
{
P->INFO=X;
P->Left=NULL;
P->Right=NULL;
}
else
cout<<"simpul tidak dapat
dibuat";
}

Pendeklarasian void bernama buat simpul yang nantinya akan dipakai dalam program untuk
membuat suatu simpul simpul dalam program.
8.
void buatakar()
{
Root=P;
}

Ini adalah void bernama buat akar yang digunakan untuk mendeklarasikan bahwa yang akan
menjadi akar adalah variabel P.
9.
void BuatAkar()
{
if(akar==NULL)
{
if(P!=NULL)
{
akar=P;
}

else
{
cout<<"Simpul belum tersedia";

}
}
else
{
cout<<"Akar sudah tersedia";
}
}

Adalah void yang mendeklarasikan apa yang akan dikerjakan dalam suatu program tersebut
yakni berupa rumus rumus yang bertujuan mencari data data yang akan ditampilkan dalam
output program tersebut sehingga dapat diorganisasikan sesuai apa yang akan kita inginkan.
10. Int main() adalah main program berupa integer atau program utama dalam koding tersebut.
Setiap program utama harus diawali dengan tanda kurung kurawal buka{ dan diakhiri dengan
tanda kurung kurawal tutup }.
11.
Inisialisasi();
buatsimpul('A'); BuatAkar();
buatsimpul('B'); akar->Left=P;
buatsimpul('C'); akar->Right=P;
buatsimpul('G'); akar->Right->Left=P;
buatsimpul('E'); akar->Left->Left=P;
buatsimpul('F'); akar->Left->Right=P;
buatsimpul('M'); akar->Right->Right=P;
Ini adalah main program yang digunakan dalam program tersebut. Inisialisasi() adalah
pemanggilan program void inisialisasi. Dan buat simpul dst adalah proses meletakan simpul
simpul yang akan ditampilkan didalam output sesuai keinginan kita.

for (i=1;i<=50;i++)
{

Q[i]=NULL;
}
Q[1]=akar;
i=1;
j=1;
while (Q[i] != NULL)
{
Current=Q[i];
cout<<Current->INFO;
if(Current->Left != NULL)
{
j++;
Q[j]=Current->Left;
}
if(Current->Right != NULL)
{
j++;
Q[j]=Current->Right;
}
i++;

}

Ini adalah proses untuk pembacaan isi node sesuai dengan urutan pembacaan nomor node
yang terisi dan mencetak isi node yang telah dibentuk tersebut kedalam sebuah output
program
12. return 0; digunakan untuk membaca data karakter.







BAB III
KESIMPULAN
Dalam program ini :
buatsimpul('A'); BuatAkar();
buatsimpul('B'); akar->Left=P;
buatsimpul('C'); akar->Right=P;
buatsimpul('G'); akar->Right->Left=P;
buatsimpul('E'); akar->Left->Left=P;
buatsimpul('F'); akar->Left->Right=P;
buatsimpul('M'); akar->Right->Right=P;
Akan sangat menentukan bagaimana program tersebut akan kita buat. Karena apabila dalam peletakan
logika left/right salah maka hasil output akan berbeda bahkan bisa menimbulkan error karena akan
terjadi crash/rebuban posisi apabila ada simpul yang berjalan bersamaan. Setiap simpul memiliki
jalannya masing masing sesuai apa yang kita mau seperti di atas.

Daftar pustaka

Ilustrasi eclipse Indigo C++, YM Kusuma Ardhana, ST.

Anda mungkin juga menyukai