laporan praktikum resmi tree
Post on 10-Oct-2015
12 Views
Preview:
TRANSCRIPT
-
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
#include
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. 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 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; coutkiri,databaru); else if(databaru > (*root)->data) tambah(&(*root)->kanan,databaru); else if(databaru == (*root)->data) cout
- int data; cout
-
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. adalah sebuah library yang dibutuhkan untuk fungsi input seperti cin>>var dan output seperti cout
-
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
top related