Anda di halaman 1dari 15

LAPORAN PRAKTIKUM RESMI

ALGORITMA & STRUKTUR DATA II


MEMBACA BINARY TREE


























Disusun oleh :

Nama : Yosua Tita Pratama

NIM : 201301010



Dosen pengampu :

Yosef Murya Kusuma Ardhana.S.T., M.Kom








JURUSAN SISTEM INFORMASI
SEKOLAH TING GI ILMU KOMPUTER YOS SUDARSO
PURWOKERTO
2014

1
BAB I

LANDASAN TEORI



1. PENGANTAR

Tree merupakan struktur data non-linear. Struktur data dalam bentuk pohon (Tree)
dapat diartikan sebuah struktur data yang secara bentuk menyerupai sebuah pohon
, yang terdiri dari serangkaian simpul (Node) yang saling berhubungan.





2. MEMBACA BINARY TREE LEVEL PER LEVEL URUT NOMOR NODE










































2







Binary tree diatas jika dibaca dan dicetak node per node, dengan pembacaan
level per level urut nomor node maka:

Untuk Tree pada Akan tercetak
Gambar (1) A B C D E F G I J K L M N O P Q
Gambar (2) A B C D E G I J K N
Gambar (3) A B C E F G J K M N
Gambar (4) A B C E J K


Untuk keperluan algoritma, maka diperlukan sebuah array (diberi nama Q) kerena 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.



































3
BAB II

PENJELASAN PROGRAM



Pada bab Membaca Binary Tree ini akan membahas latihan dan tugas pada Insert level per level

di dalam Eclipse C++


Latihan


Listing program Tree bagian 5

/*
* Tree lima.cpp
*
* Created on: Oct 10, 2014
* Author: Admin
*/
#include <iostream>
#include <malloc.h>

using namespace std;

struct Node
{
struct Node *Left;
char INFO;
struct Node *Right;
};

typedef struct Node Simpul;
Simpul *Q[51], *Current, *Akar, *P;
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;
}

4
else
cout<<"Simpul tidak bisa dibuat";
}

void BuatAkar()
{
if(Akar==NULL)
{
if(P != NULL)
{
Akar = P;
}
else
{
cout<<"Simpul belum ada";
}
}
else
{
cout<<"Akar sudah ada";
}
}

int main()
{

Inisialisasi();

BuatSimpul('A');
BuatAkar();
BuatSimpul('B');
Akar->Left=P;
BuatSimpul('C');
Akar->Right=P;
BuatSimpul('E');
Akar->Left->Left=P;
BuatSimpul('F');
Akar->Left->Right=P;
BuatSimpul('G');
Akar->Right->Left=P;
BuatSimpul('M');
Akar->Right->Left->Right=P;

for(i=1; i<=50; i++)
{ Q[i]=NULL; }
Q[1]=Akar;
i=1; j=1;
Current=Q[i];

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

5
if(Current->Right!=NULL){
j++; Q[j]=Current->Right;
}
i++;
}
return 0;
}





Hasil Output program













Penjelasan Listing program Tree lima pada eclipse

1. Tanda yang diawali /* dan diakhiri tanda */ merupakan script untuk membuat sebuah
komentar pada pemrograman C++ yang didalamnya mengandung sebuah perintah atau
teks, maka saat program dirunning atau dijalankan tidak akan dibaca oleh compiler.
2. #include : Pengarah Praprocessor

Include adalah pengarah suatu library yang digunakan untuk suatu program.

3. Iostream : Library

Iostream adalah library untuk input dan output cin dan cout.

4. Tanda { dan } adalah tanda untuk mengawali dan mengakhiri program.

5. Return 0 berfungsi untuk menampilkan program setelah dieksekusi.

6. Cout : untuk menampilkan output program yang sudah dituliskan.

7. Cin : untuk menginputkan data yang dimasukkan oleh user.

8. include<malloc.h> : Library pada eclipse yang digunakan untuk mengalokasi memori.

9. Inisialisasi() : Pemanggilan prosedur Insialisasi pada main program.









6

10. struct Node
{
struct Node
*Left; char INFO;
struct Node
*Right; struct
Node *Link; };



Di gunakan untuk tipe data abstrak struct pada proses pembuatan node.

11. typedef struct Node Simpul: Tipe data abstrak typedef struct pada Node Simpul

12. void BuatSimpul(char X): Prosedur yang digunakan untuk membuat simpul
baru pada program.
13. void Inisialisasi() : Prosedur yang digunakan untuk inisialisasi pada sebuah node root.

14. P=(Simpul*) malloc(sizeof(Simpul));

Fungsi malloc yang berguna untuk mengalokasi memori pada program.

15. if (P != NULL)
{
P->INFO=X; P-
>Left=NULL; P-
>Right=NULL;
}
Penggunaan if-else pada prosedur pembuatan simpul pada program.


16. Statement if-else : Digunakan untuk modul perulangan pada program.

17. Statement for : Digunakan untuk modul perulangan pada program.

18. BuatSimpul() : Pemanggilan fungsi BuatSimpul pada main program.

19. BuatAkar() : Pemanggilan prosedur BuatAkar pada main program.
















7

20. BuatSimpul('A');
BuatAkar();
BuatSimpul('B'); Akar-
>Left=P; BuatSimpul('C');
Akar->Right=P;
BuatSimpul('E'); Akar-
>Left->Left=P;
BuatSimpul('F'); Akar-
>Left->Right=P;
BuatSimpul('G'); Akar-
>Right->Left=P;
BuatSimpul('M'); Akar-
>Right->Left->Right=P;


Proses pengurutan node pada main program supaya data pada tree dapat
dibaca secara urut.

21. for(i=1; i<=50; i++)
{ Q[i]=NULL; }
Q[1]=Akar;
i=1; j=1;
Current=Q[i];
Penggunaan statement for untuk perulangan pada main program.


22. 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++;
}

Penggunaan while pada main program yang berfungsi untuk menginsertkan level
per level tree secara urut.





8
Tugas


1. Listing program membaca binary tree level per level urut nomor node
diatas ini menghasilkan out .?
2. Bagian listing program mana yang menunjukan pembuatan tree?

3. Kesalahan apa yang terdapat pada listing program tersebut, berikan solusinya.


Jawaban :


1.











2. void Inisialisasi()
{
Akar=NULL;
P=NULL;
}

Ini adalah proses Inisialisasi atau pembuatan node root pada program.


void BuatSimpul(char X)
{
P=(Simpul*) malloc(sizeof(Simpul));
if (P != NULL)
{
P->INFO=X; P-
>Left=NULL; P-
>Right=NULL;
}

Proses pembuatan simpul jika P tidak kosong/NULL.










9
BuatSimpul('A');
BuatAkar();
BuatSimpul('B');
Akar->Left=P;
BuatSimpul('C');
Akar->Right=P;
BuatSimpul('E');
Akar->Left->Left=P;
BuatSimpul('F');
Akar->Left->Right=P;
BuatSimpul('G');
Akar->Right->Left=P;
BuatSimpul('M');
Akar->Right->Left->Right=P;

Coding diatas adalah listing dimain program dimana Node tree dibuat secara urut
dan arah pembuatannya sesuai dengan binary tree itu sendiri.

for(i=1; i<=50; i++)
{ Q[i]=NULL; }
Q[1]=Akar;
i=1; j=1;
Current=Q[i];

Coding diatas adalah coding yang menunjukkan bahwa pada main program
menggunakkan for untuk perulangan pada node tree di main program.




























10
3. Berikut dibawah ini adalah listing program membaca binary tree yang salah :

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

struct Node
{
struct Node *Left;
char INFO;
struct Node *Right;
};
typedef struct Node Simpul;
Simpul *Q[51], *Current, *Akar, *P;
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 printf("Simpul tidak bisa dibuat");
}

void BuatAkar()
{
if(Akar==NULL)
{
if(P != NULL)
{
Akar = P;
}
else
{
printf("Simpul belum ada");
}
}
else
{
printf("Akar sudah ada");
}
}

void main()

11
{
Inisialisasi();
BuatSimpul('A');
BuatAkar();
BuatSimpul('B'); Akar-
>Left=P; BuatSimpul('C');
Akar->Right->Right=P;
BuatSimpul('G'); Akar-
>Left->Right=P;
BuatSimpul('E'); Akar-
>Right->Left=P;
BuatSimpul('F'); Akar-
>Right->Left->Left=P;
BuatSimpul('M'); Akar-
>Right->Left->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];
printf("%c ", Current->INFO);
if(Current->Left != NULL)
{
j++; Q[j]=Current-
>Left;
}
if(Current->Right != NULL)
{
j++; Q[j]=Current-
>Right;
}
i++;
}
getche();
}


Yang jika dijalankan di eclipse hasilnya error , berikut ini adalah beberapa kesalahan dan

solusi untuk membetulkan listing program membaca Tree lima di atas.









12
kesalahan pada program Tree 5 adalah :

1. Arah pembuatan simpul pada main program. dimana seharusnya urutan yang benar
adalah sebagai berikut :

BuatSimpul('A');

BuatAkar();

BuatSimpul('B');

Akar->Left=P;

BuatSimpul('C');

Akar->Right=P;

BuatSimpul('E');

Akar->Left->Left=P;

BuatSimpul('F');

Akar->Left->Right=P;

BuatSimpul('G');

Akar->Right->Left=P;

BuatSimpul('M');

Akar->Right->Left->Right=P;


Dikarenakan arah yang tidak benar , maka pembuatan tree pada main program
tidak bisa memunculkan node sama sekali.

2. Kurangnya penulisan using namespace std; dibawah library , karena dalam eclipse
harus di ketikkan using namespace std baru bisa berjalan program itu.

3. Penggunaan getche(); pada main program , getche() adalah bagian penutup
sekaligus script program untuk memunculkan main program. getche() seharusnya tidak
boleh digunakan di dalam eclipse C++ , namun hanya bisa digunakan di dalam borland
C++. SOlusinya adalah penggunaan return 0 dalam eclipse C++.

4. dalam pendefinisian main program , seharusnya digunakan int main() dan bukan void main().

5. Dalam library eclipse C++ tidak perlu menggunakan <stdio.h> dan <conio.h> , karena tanpa
ditulis pun library akan secara otomatis memunculkan tulisan pada main program. Dan juga
lebih mudah menggunakan cout dan cin maka solusinya adalah memakai library <iostrea

13
BAB III

KESIMPULAN



1. Pada Bab Tree bagian lima ini , latihan program tidak bisa dijalankan di eclipse
karena ada beberapa kesalahan pada program seperti , prosedur yang kurang
lengkap , penggunaan library yang salah serta beberapa kesalahan lainnya




2. Pada tugas praktikum tree lima ini , kesalahan yang terjadi adalah :



Arah pembuatan node yang salah.
Kurangnya using namespcace std dan return 0 pada program yang
menyebabkan tidak berjalannya program.
Penggunaan library <stdio.h> dan <conio.h> yang salah pada eclipse ,
seharusnya pada eclipse memakai <iostream>.


































14
BAB IV

DAFTAR PUSTAKA

Ardhana. YM Kusuma. 2013. Struktur Data dalam Ilustrasi Eclipse Indigo C ++.

Yogyakarta: CAPS (Center of Academic Publishing Service).























































15

Anda mungkin juga menyukai