LAPORAN PRAKTIKUM RESMI ALGORITMA & STRUKTUR DATA II
Disusun oleh : Yonagatha Missyerry Paramitha Putri 201301069
Dosen pengampu : YosefMurya Kusuma Ardhana.S.T., M.Kom
JURUSAN SISTEM INFORMASI SEKOLAH TING GI ILMU KOMPUTER YOS SUDARSO PURWOKERTO 2014
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.
Simpul-simpul atau node tersebut dihubungkan oleh sebuah vektor. Node yang berada di pangkaptree disebut node akar (root) , sedangkan node yang berada paling ujung pada piramida tree disebut node daun (leaf).
2. STRUKTUR TREE
Semua bulatan disebut simpul (node) Node F adalah node induk dari H dan I. Node H , I adalah node anak dari F.
Akar (root) adalah simpul yang tidak memiliki superordinat. Untuk pohon yang di contohkan di atas maka root adalah node A. Daun (leaf) adalah simpul yang tidak memiliki subordinat. Untuk pohon yang di contohkan di atas maka leaf adalah node D , E , G , H dan I. Node B merupakan superordinat dari node D dan E. Node D dan E mempunyai superordinat yang sama yaitu node B.
3. POHON BINER (BINARY TREE) Pohon biner adalah sebuah tree yang pada masing-masing simpulnya hanya dapat memiliki maksimum dua simpul anak , tidak boleh lebih. Pada pohon biner , umumnya kedua node anak disebut dengan posisinya , yaitu subordinat kiri dan subordinat kanan.
Striclybinarytree Striclybinarytree adalah pohon biner yang semua nodenya (kecuali simpul leaf) mempunyai lengkap node subordinat kiri dan node subordinat kanan.
Completelybinarytree Completelybinarytree dengan depth = d adalah pohon biner striclybinarytree , dimana semua leaf hanya berada pada level d. Balancedbinarytree Balancedbinarytree (pohon biner seimbang) atau biasa disebut dengan pohon AVL adalah pohon biner yang ketinggian subtree kiri dan subtree kanan untuk setiap nodesuperordinat paling banyak selisih 1.
4. PENOMORAN NODE POHON BINER Untuk melakukan konversi telah disepakati cara penomoran setiap node dalam binarytree sebagai berikut : Jika sebuah node bernomor n , maka subordinat kiri bernomor 2n dan subordinat kanan bernomor 2n + 1. Noderoot diberi nomor 1. Dengan mengetahui dari nomor setiap node maka sebuah binarytree dapat direpresentasikan ke dalam sebuah array satu dimensi. 5. PROSES INISIALISASI Inisialisasi yang dimaksud adalah pemberian nilai awal pada suatu variabel atau kondisi yang dapat digunakan sebagai ciri suatu kondisi.
Instruksi dasar untuk inisialisasi : Root = NULL; P=NULL: Inisialisasi bila ditulis dalam sebuah fungsi : Nama fungsi Inisialiasasi VoidInisialisasi () { Root = NULL; P = NULL; }
Fungsi ini harus dilaksanakan sebelum operasi yang lain. Pointerroot ketika dideklarasikan isinya sudah ada , tapi nilainya tidak diketahui. Pointerroot perlu diisi dengan NULL karena pointerroot ini akan dijadikan tanda. Bila isinya NULL , beartitree belum ada. Bila isinya bukan NULL beartitree sudah ada , dimananode akar sedang ditunjuk oleh pointerroot.
BAB II PENJELASAN PROGRAM
Pada bab Tree ini akan membahas tentang listing program Tree pada program eclipse.
Listing program Tree * Tree.cpp * * Created on: Sep 10, 2014 *
Author: Yonagatha Missyerry Paramitha Putri
*/ #include
Using namespace std; structNode{ int data; Node*kiri; Node*kanan;
};
void tambah(Node**root,int databaru) { if((*root) == NULL) { Node*baru; baru = newNode;
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 ada!\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 pil; Node*pohon; pohon = NULL; do{ int data; cout<<"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<<"Pilihan : "; cin>>pil; switch(pil) { 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(pil!=5); return 0;
}
Hasil Output
Penjelasan Listing program Tree pada eclipse 1. Include adalah pengarah suatulibrary yang digunakan untuk suatu program. 2. Iostream adalah library untuk input dan output “cin” dan “cout”. 3. 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. 4. Tanda ‘{‘ dan ‘}’ adalah tanda untuk mengawali dan mengakhiri program. 5. Return 0 berfungsi untuk menampilkan program setelah dieksekusi. 6. Cout digunakan untuk menampilkan output program yang sudah dituliskan. 7. Cin digunakan untuk menginputkan data yang dimasukkan oleh user. 8. structNode :untuk tipe data abstrak struct pada proses pembuatan node. 9. void tambah : Prosedur yang di gunakan untuk menambah Node pada program Tree. 10.
if((*root) == NULL)
{ Node*baru; baru = newNode;
baru->data = databaru; baru->kiri = NULL; baru->kanan = NULL; (*root) = baru; (*root)->kiri = NULL; (*root)->kanan = NULL;
cout<<"Data bertambah!\n"; } Jika root = NULL maka data bertambah , artinya jika ada data yang di tambahkan maka node baru akan bertambah. 11. Statementif-else itu Digunakan untuk modul perulangan pada program. 12.
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!\n";
} Jika data yang sama di tambahkan , maka statement akan menandakan bahwa data yang
sama sudah ada dalam program Tree. 13. Void preOrder untuk menampilkan data yang telah di tambahkan dalam suatuNode akar (root) dan node daun (leaf). 14.
if(root != NULL)
{ cout<data; cout<<endl; preOrder(root>kiri); preOrder(root>kanan);
} :script program untuk mengeksekusi perintah preOrder pada program.
15. Void inOrder untuk menampilkan data yangtelah di tambahkan. 16.
if(root != NULL)
{ inOrder(root>kiri); cout<data; cout<<endl; inOrder(root>kanan);
} :scrpit program untuk mengeksekusi perintah inOrder pada program.
17. void postOrder : untuk menampilkan data , tetapidata yang ditampilkan lebih dahulu yaitu data yang paling terakhir ditambahkan pada program Tree. 18.
if(root != NULL)
{ postOrder(root>kiri); postOrder(root>kanan); cout<data; cout<<endl; } : scrpit program untuk mengeksekusi perintah postOrder pada program. 19. Node*pohon; pohon = NULL; Adalah proses Inisialisasi pada node
dalam program Tree. 20. tambah(&pohon,data); adalah Pemanggilan prosedur tambah pada main program 21. preOrder(pohon); adalah Pemanggilan prosedur preOrder pada main program. 22. inOrder(pohon); adalah Pemanggilan prosedur inOrder pada main program. 23. Statement do-while adalah Digunakan untuk modul perulangan pada main program.
BAB III KESIMPULAN 1.
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.
Simpul-simpul atau node tersebut dihubungkan oleh sebuah vektor. Node yang berada di pangkaptree disebut node akar (root) , sedangkan node yang berada paling ujung pada piramida tree disebut node daun (leaf).
3.
Pohon biner adalah sebuah tree yang pada masing-masing simpulnya hanya dapat memiliki maksimum dua simpul anak , tidak boleh lebih. Pada pohon biner , umumnya kedua node anak disebut dengan posisinya , yaitu subordinat kiri dan subordinat kanan.
Menurut praktikum diatas dapat diambil kesimpulan : a. void tambah : Prosedur yang di gunakan untuk menambah Node pada program Tree b. Void preOrder untuk menampilkan data yang telah di tambahkan dalam suatuNode akar (root) dan node daun (leaf). c. Void inOrder untuk menampilkan data yangtelah di tambahkan. d. void postOrder : untuk menampilkan data , tetapidata yang ditampilkan lebih dahulu yaitu data yang paling terakhir ditambahkan pada program Tree. e. tambah(&pohon,data); adalah Pemanggilan prosedur tambah pada main program f. preOrder(pohon); adalah Pemanggilan prosedur preOrder pada main program. g. inOrder(pohon); adalah Pemanggilan prosedur inOrder pada main program. h. Dan pada praktikum diatas getch() , clscr(), dan #include<windows.h> tidak bisa di jalankan di eclips , tetapi bisa dijalankan di borland , karna memiliki format yg berbeda
BAB V DAFTAR PUSTAKA Ardhana. YM Kusuma. 2013. Struktur Data dalam Ilustrasi EclipseIndigo C ++.
Yogyakarta: CAPS (Center of AcademicPublishing Service).