Anda di halaman 1dari 11

LAPORAN PRAKTEK RESMI

TREE







Disusun oleh:
Chris Febriyanto
201001017


Dosen pengampu:
Yosef Murya Kusuma Ardhana, S.T




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

A. Tree
Tree merupakan struktur data non linear. Struktur data dalam bentuk tree (pohon) dapat
diartikan sebuah struktur data yang secara bentuk menyerupai sebuah pohon, yang terdiri dari
serangkaian simpul (node) yang saling berhubungan. Simpul-simpul atau node tersebut
dihubungkan oleh sebuah vektor. Setiap simpul dapat memiliki 0 atau lebih node anak
(child). Sebuah node yang memiliki node anak disebut node induk (parent). Sebuah node
anak hanya memiliki satu node induk. Sesuai konvensi ilmu komputer, tree bertumbuh ke
bawah, dengan demikian node anak akan digambarkan berada di bawah node induknya. Node
yang berada di pangkal tree disebut node akar (root), sedangkan node yang berada paling
ujung pada piramida tree disebut node daun (leaf).
Akar (root) adalah simpul yang tidak memiliki superordinat. Untuk pohon yang
dicontohkan diatas, maka root adalah node A. Daun (leaf) adalah simpul yang tidak memiliki
subordinat. Untuk pohon diatas dicontohkan diatas, maka leaf adalah node D, E, F, H, I, J
Pohon biner adalah sebuah tree yang pada masing-masing simpulnya hanya dapat
memiliki maksimum 2 (dua) simpul anak. Tidak boleh lebih. Pada pohon biner, umumnya
kedua node anak (child) disebut dengan posisinya, yaitu subordinat kiri (left child) dan
subordinat kanan (right child).


1. Deklarasi Tree Karena tree tersusun oleh node-node, maka yang perlu kita deklarasikan
adalah komponen node itu sendiri. Dalam contoh dibawah, akan kita namai Node.
typedef struct Node{
int data;
Node *kiri;
Node *kanan;
};




2. Inisialisasi Tree
Untuk pertama kali, saat kita akan membuat sebuah pohon biner, asumsi awal adalah pohon
itu belum bertumbuh, belum memiliki node sama sekali, sehingga masih kosong. Oleh karena
itu perlu kita tambahkan kode berikut pada baris awal fungsi Main:
Node *pohon;
pohon = NULL;
Kita mendeklarasikan sebuah pointer yang akan menunjuk ke akar pohon yang kita buat,
dengan nama *pohon. Pointer ini ditujukan untuk menunjuk struktur bertipe Node, yang
telah dibuat pada bagian 1. Karena pohon tersebut sama sekali belum memiliki node, maka
pointer *pohon ditunjukkan ke NULL.
3. Menambahkan Node Pada Tree

Karena pohon yang kita buat merupakan sebuah pohon biner, maka untuk menambahkan
sebuah node, secara otomatis penambahan tersebut mengikuti aturan penambahan node pada
pohon biner:
1.) Jika pohon kosong, maka node baru ditempatkan sebagai akar pohon.

2.) Jika pohon tidak kosong, maka dimulai dari node akar, dilakukan proses pengecekan
berikut:

a. Jika nilai node baru lebih kecil dari nilai node yang sedang dicek, maka lihat ke kiri node
tersebut. Jika kiri node tersebut kosong (belum memiliki kiri), maka node baru menjadi kiri
node yang sedang dicek. Seandainya kiri node sudah terisi, lakukan kembali pengecekan a
dan b terhadap node kiri tersebut. Pengecekan ini dilakukan seterusnya hingga node baru
dapat ditempatkan. b. Jika nilai node baru lebih besar dari nilai node yang sedang dicek,
maka lihat ke kanan node tersebut. Jika kanan node tersebut kosong (belum memiliki kanan),
maka node baru menjadi kanan node yang sedang dicek. Seandainya kanan node sudah terisi,
lakukan kembali pengecekan a dan b terhadap node kanan tersebut. Pengecekan ini dilakukan
seterusnya hingga node baru dapat ditempatkan.
4. Membaca dan Menampilkan Node Pada Tree
Untuk membaca dan menampilkan seluruh node yang terdapat pada pohon biner, terdapat 3
macam cara, atau yang biasa disebut kunjungan (visit). Semua kunjungan diawali dengan
mengunjungi akar pohon. Karena proses kunjungan ini memerlukan perulangan proses yang
sama namun untuk depth (kedalaman) yang berbeda, maka ketiganya diimplementasikan
dengan fungsi rekursif.


BAB II
PENJELASAN PROGRAM

Berikut ini kode program keseluruhan, termasuk menu tampilan, di mana di dalamnya
terdapat Deklarasi Tree, Inisialisasi Tree, Penambahan Node, dan Pembacaaan serta
Menampilkan Node dengan 3 macam kunjungan. Kode ditulis dengan Eclipse C++
Listing Program Tree
#include<iostream>
using namespace std;

struct Node
{
int data;
Node *kiri;
Node *kanan;
};

void tambah(Node *root,int databaru)
{
if((*root) == NULL)
{
Node *baru;
baru = new Node;
baru->data = databaru;
baru->kiri = NULL;
baru->kanan = NULL;
(*root) = baru;
(*root)->kiri = NULL;
(*root)->kanan = NULL;
cout<<"Data bertambah!";
}
else if(databaru < (*root)->data)
tambah(&(*root)->kiri,databaru);
else if(databaru > (*root)->data)
tambah(&(*root)->kanan,databaru);
else if(databaru == (*root)->data)
cout<<"Data sudah ada!";
}

void preOrder(Node *root)
{
if(root != NULL)
{
cout<<" "<<root->data;
preOrder(root->kiri);
preOrder(root->kanan);
}
}

void inOrder(Node *root)
{
if(root != NULL)
{
inOrder(root->kiri);
cout<<" "<<root->data;
inOrder(root->kanan);
}
}

void postOrder(Node *root)
{
if(root !=NULL)
{
postOrder(root->kiri);
postOrder(root->kanan);
cout<<" "<<root->data;
}
}

void main()
{
int pil,c;
Node *pohon, *t;
pohon = NULL;
do
{
int data;
cout<<"MENU\n";
cout<<"1.Tambah\n";
cout<<"2.Lihat pre-order\n";
cout<<"3.Lihat in-order\n";
cout<<"4.Lihat post-order\n";
cout<<"5.Exit\n";

cout<<"Pilihan : ";
cin>>pil;

switch(pil)
{
case 1: cout<<"Data Baru : ";
cin>>tambah(&pohon,data);
break;

case 2: if(pohon !=NULL) preOrder(pohon);
else
cout<<"Masih Kosong!";
break;

case 3: if(pohon !=NULL) inOrder(pohon);
else
cout<<"Masih Kosong!";
break;

case 4: if(pohon !=NULL) postOrder(pohon);
else
cout<<"Masih Kosong!";
break;

}

}
while(pil !=5);
}

Output Program :
Pre-Order

In-order


Post-Order


Penjelasan program tree:
1. Tanda yang diawali dengan /* dan diakhiri */ adalah script untuk sebuah komentar
atau perintah /teks, namun jika program di run tidak akan dibaca oleh compiler,
tidak muncul di output.
2. #include adalah pengaruh preprocessor yang berfungsi untuk menginstruksikan
compiler.
3. <iostream> adalah penggunaan file inclusion pada standar C++ lama.
4. Using namespace adalah kita menggunakan namespace bernama std.
5. Int main( ) adalah fungsi utama dari sebuah kode bahasa C.
struct Node
{
int data;
Node *kiri;
Node *kanan;
};
6. Adalah tipe data struct yang berisi node dan pointer.














void tambah(Node *root,int databaru)
{
if((*root) == NULL)
{
Node *baru;
baru = new Node;
baru->data = databaru;
baru->kiri = NULL;
baru->kanan = NULL;
(*root) = baru;
(*root)->kiri = NULL;
(*root)->kanan = NULL;
cout<<"Data bertambah!";
}
7. Adalah untuk menginputkan data baru.

else if(databaru < (*root)->data)
tambah(&(*root)->kiri,databaru);
else if(databaru > (*root)->data)
tambah(&(*root)->kanan,databaru);
else if(databaru == (*root)->data)
cout<<"Data sudah ada!";
8. Adalah untuk jika ada data baru yang sama, maka akan muncul perintah Data
sudah ada!.

void preOrder(Node *root)
{
if(root != NULL)
{
cout<<" "<<root->data;
preOrder(root->kiri);
preOrder(root->kanan);
}
9. Adalah untuk mengatur tata letak tulisan atau angka.

void inOrder(Node *root)
{
if(root != NULL)
{
inOrder(root->kiri);
cout<<" "<<root->data;
inOrder(root->kanan);
}
}
10. Adalah untuk mengatur tata letak tulisan atau angka.
void postOrder(Node *root)
{
if(root !=NULL)
{
postOrder(root->kiri);
postOrder(root->kanan);
cout<<" "<<root->data;
}
}

11. Adalah untuk mengatur tata letak tulisan atau angka.
void main()
{
int pil,c;
Node *pohon, *t;
pohon = NULL;
do
{
int data;
cout<<"MENU\n";
cout<<"1.Tambah\n";
cout<<"2.Lihat pre-order\n";
cout<<"3.Lihat in-order\n";
cout<<"4.Lihat post-order\n";
cout<<"5.Exit\n";
cout<<"Pilihan : ";
cin>>pil;

switch(pil)
{
case 1: cout<<"Data Baru : ";
cin>>tambah(&pohon,data);
break;

case 2: if(pohon !=NULL) preOrder(pohon);
else
cout<<"Masih Kosong!";
break;

case 3: if(pohon !=NULL) inOrder(pohon);
else
cout<<"Masih Kosong!";
break;

case 4: if(pohon !=NULL) postOrder(pohon);
else
cout<<"Masih Kosong!";
break;

}

}
while(pil !=5);
}
12. Adalah sebuah coding program untuk dijalankan.






































BAB III

KESIMPULAN


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