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
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 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<data; cout<<endl; preOrder(root->kiri); preOrder(root->kanan); } } void inOrder(Node *root) { if(root != NULL) { inOrder(root->kiri); cout<data; cout<<endl; inOrder(root->kanan); } } void postOrder(Node *root) { if(root != NULL){ postOrder(root->kiri); postOrder(root->kanan); cout<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. 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<<"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.