Anda di halaman 1dari 11

LAPORAN PRAKTIKUM RESMI

ALGORITMA DAN STRUKTUR DATA II


POHON (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
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).

STRUKTUR TREE

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
TINGKAT (LEVEL) DAN KEDALAMAN (DEPTH)
Tingkat (level)
Root dinyatakan berada pada level 0 (namun ada juga dibebearapa buku
literatur lain menyebutnya level 1).
Kedalaman (depth)
Tree yang mempunyai posisi paling atas atau level teratas.

DERAJAT (DEGREE) SEBUAH NODE

Degree pada sebuah node menyatakan jumlah subordinat dari node tersebut.
Untuk tree yang dicontohkan pada gambar diatas :
Node A : degree = 3.
Node B : degree = 2.
Node C : degree = 0.
Node D : degree = 3.


BAB II
PENJELASAN PROGRAM
Program 1 : .
/*
* ugn.cpp
*
* Created on: Mar 19, 2009
* Author: Administrator
*/

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

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;
printf("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)
printf("data sudah ada!");
}

void preOrder (node *root) {
if (root !=NULL){
printf("%d", root->data);
preOrder(root->kiri);
preOrder(root->kanan);

}
}

void inOrder(node *root){
if(root !=NULL){
inOrder(root->kiri);
printf("%d",root->data);
inOrder(root->kanan);
}
}

void postOrder(node *root){
if(root !=NULL){
postOrder(root->kiri);
postOrder(root->kanan);
printf("%d",root->data);
}
}

void main(){
int pil, c;
node *pohon, t;
pohon = NULL;
do{
int data;
printf("MENU\n");
printf("1. Tambah\n");
printf("2. Lihat pre- order\n");
printf("3. Lihat in-order\n");
printf("4. Lihat post-order\n");
printf("5. Exit\n");
printf("pilihan : "); scanf("%d",&pil);
switch(pil){
case 1: printf("data baru :"); scanf("%d",&data);
tambah(&pohon, data);
break;
case 2: if(pohon!=NULL) preOrder(pohon);
else printf("masih kosong!");
break;
case 3 : if(pohon!=NULL) inOrder(pohon);
else printf("masih kosong!");
break;
case 4: if(pohon!=NULL) postOrder(pohon);
else printf("masih kosong!");
break;
}
getch();
}while(pil!=5);
}

Output :

Berikut penjelasan :

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. <stdio.h> adalah sebuah library yang dibutuhkan untuk fungsi input seperti scanf(var) dan
output seperti printf(var.)
4. void 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 }.
5. struct Node{
6. int data;
7. Node *kiri;
8. Node *kanan;
9. };
Ini adalah deklarasi untuk tipe data baru bernama node.
10. void tambah(Node **root,int databaru) adalah sebuah inisialisasi menu Yang
digunakan dalam program.ogram..
11. void preOrder(Node *root) adalah inisialisasi menu yang ada dalamnya
12. void inOrder(Node *root) adalah inisialisasi menu yang digunakan dalam
program untuk menu bernama inOrder
13. void postOrder(Node *root) adalah inisialisasi menu yang digunakan dalam
program untuk menu bernama post order
14. int pilih; deklarasi tipe data yg digunakan adalah integer.
15. printf("MENU\n");
printf("1. Tambah\n");
printf("2. Lihat pre- order\n");
printf("3. Lihat in-order\n");
printf("4. Lihat post-order\n");
printf("5. Exit\n");
16. adalah proses untuk menampilkan daftar menu yg digunakan dalam program.
17. Switch case adalah bagian dari program yg digunakan saat proses pemilihan menu program.
18. While(pilih!=5) adalah deklarasi perulangan yg digunakan program tersebut.



TUGAS PRAKTIKUM
Tugas praktikum dalam modul ini adalah :
1. Mengubah program dengan menggunakan library iostream..

Berikut adalah listing programnya:
/*
* tree.cpp
*
* Created on: 13 Sep 2014
* Author: unggul budi suryanto
*/



#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!\n";
}

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 tersedia!\n";
}

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

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

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


int main()
{
int pilih;
Node *pohon;
pohon = NULL;
do{

int data;
cout<<"Pilihan Menu"<<endl;
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<<"jalankan menu : ";
cin>>pilih;
switch(pilih)
{
case 1:
cout<<"Data baru : ";
cin>>data;
tambah(&pohon,data);
break;

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

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

case 4:
if(pohon!=NULL)
postOrder(pohon);
else
cout<<"Masih kosong!\n";
break;
}

}while(pilih!=5);
return 0;
}


Berikut adalah output dari program :

Penjelasan program :
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. 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 }.
5. struct Node{
6. int data;
7. Node *kiri;
8. Node *kanan;
9. };
Ini adalah deklarasi untuk tipe data baru bernama node.
10. void tambah(Node **root,int databaru) adalah sebuah inisialisasi menu Yang
digunakan dalam program.ogram..
11. void preOrder(Node *root) adalah inisialisasi menu yang ada dalamnya
12. void inOrder(Node *root) adalah inisialisasi menu yang digunakan dalam
program untuk menu bernama inOrder
13. void postOrder(Node *root) adalah inisialisasi menu yang digunakan dalam
program untuk menu bernama post order
14. int pilih; deklarasi tipe data yg digunakan adalah integer.
15. cout<<"Pilihan Menu"<<endl;
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<<"jalankan menu : ";
adalah proses untuk menampilkan daftar menu yg digunakan dalam program.
16. Switch case adalah bagian dari program yg digunakan saat proses pemilihan menu program.
17. While(pilih!=5) adalah deklarasi perulangan yg digunakan program tersebut.
18. return 0; digunakan untuk membaca data karakter.



BAB III
KESIMPULAN
Dalam program aplikasi eclipse, pada akhir code digunakan stnrax return 0 untuk
menampilkan suatu program.
dalam library iostream, void main diganti menjadi int main.
Menggunakan library iostream brarti memakain syntax cin, cout.

Daftar pustaka

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

Anda mungkin juga menyukai