TREE (POHON)
Oleh:
S1 PTI14 OFF A
Tujuan
Mahasiswa mampu menjelaskan mengenai algoritma Tree
Mahasiswa mampu membuat dan mendeklarasikan struktur algoritma Tree
Mahasiswa mampu menerapkan dan mengimplementasikan algoritma Tree
DASAR TEORI
Pengertian tree
Tree adalah suatu struktur data yang berbentuk pohon terbalik (akarnya terletak diatas)
dan terdiri dari serangkaian node (simpul) yang saling berhubungan.
Output Program :
Algoritma :
1. Start
2. Deklarasi header file
3. Deklarasi variabel
4. Tampilan Menu
5. Masukkan pilihan
6. Menyimpan pilihan yang sudah diinputkan
7. Menampilkan isi dari pilihan
8. Jika pilih no 1, maka akan menambahkan data
9. Menyimpan data yang telah diinputkan
10. Jika pilih no 2, maka akan menampilkan data yang baru diinputkan
11. Jika pilih no 3, maka akan menampilkan data yang sama, hanya saja urutannya yang
berbeda (dibalik)
12. Jika pilih no 4, maka akan menampilkan data yang sama dan urutannya juga sama
dengan in-order
13. Jika pilih no 5, maka akan keluar dari program
14. Output program
15. End
Penjelasan Program :
Pada latihan ini diterapkan pemrograman dengan menggunakan tree. Di dalam program ini,
menyediakan menu operasi dalam tree yaitu pre-order,in-order, dan post-order juga ada menu
untuk menambahkan data yang akan dioperasikan serta menu untuk keluar (exit). Ketika user
telah menambahkan data-data kemudian memilih operasi tree,program akan berjalan sesuai
dengan sintaks yang ada. Jika user memilih pre-order, maka data-data tersebut akan
dimunculkan sesuai urutan penambahan data. Jika user memilih in-order,maka data-data akan
diurutkan dari yang terkecil ke terbesar. Dan jika user memilih post-order, data-data itu
ditampilkan sama seperti in-order karena terdapat sintaks postOrder(root->kiri);
postOrder(root->kanan); sehingga apabila data tidak mengalami perubahan, maka akan
ditampilkan seperti tampilan in-order.
Tugas 1
Nama Program : Program Tree dengan Fungsi untuk Menghapus Sebuah Node
Tertentu dan Mapus Seluruh Node
Bahasa Pemrograman : C++
Compiler : MinGW Developer Studio
Script Program :
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
struct Node{
int data;
Node *kiri;
Node *kanan;
};
int count;
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;
printf("Data sudah ditambahkan!");
count++;
}
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 search(Node **root, int cari){
if((*root) == NULL){
printf("Data tidak ditemukan!");
}
else if(cari < (*root)->data)
search(&(*root)->kiri,cari);
else if(cari > (*root)->data)
search(&(*root)->kanan,cari);
else if(cari == (*root)->data)
printf("Data ditemukan!");
}
void hapus(Node **root, int del){
if((*root) == NULL){
printf("Data tidak ada!");
}
else if(del < (*root)->data)
hapus(&(*root)->kiri,del);
else if(del > (*root)->data)
hapus(&(*root)->kanan,del);
else if(del == (*root)->data){
(*root)=NULL;
printf("Data sudah dihapus!");
}
}
int main(){
int pil, cari, del;
Node *pohon;
pohon=NULL;
do{
int data;
system("cls");
printf("\n MENU ");
printf("\n========================\n");
printf("1. Menambah data\n");
printf("2. Lihat pre-Order\n");
printf("3. Lihat in-Order\n");
printf("4. Lihat post-Order\n");
printf("5. Cari data\n");
printf("6. Menghapus data\n");
printf("7. Mengkosongkan Tree\n");
printf("8. Keluar\n");
printf("========================\n");
printf("Masukkan pilihan : " );
scanf("%d", &pil);
switch(pil){
case 1:
printf("\nMasukkan data baru : ");
scanf("%d", &data);
tambah(&pohon, data);
break;
case 2:
if(pohon!=NULL){
printf("\n");
preOrder(pohon);
}
else printf("\nTree masih kosong!!");
break;
case 3:
if(pohon!=NULL){
printf("\n");
inOrder(pohon);
}
else printf("\nTree masih kosong!!");
break;
case 4:
if(pohon!=NULL){
printf("\n");
postOrder(pohon);
}
else printf("\nTree masih kosong!!");
break;
case 5:
printf("\nMasukkan data yg dicari : ");
scanf("%d", &cari);
search(&pohon, cari);
break;
case 6:
printf("\nMasukkan data yg dihapus : ");
scanf("%d", &del);
hapus(&pohon, del);
break;
case 7:
pohon=NULL;
printf("\nTree sudah dikosongkan!!");
break;
}
getch();
}
while(pil!=8);
}
Output Program :
Algoritma :
1. Start
2. Deklarasi header file
3. Deklarasi variabel
4. Tampilan Menu
5. Masukkan pilihan
6. Menyimpan pilihan yang sudah diinputkan
7. Menampilkan isi dari pilihan
8. Jika pilih no 1, maka akan menambah data
9. Menyimpan data yang telah diinputkan
10. Jika pilih no 2, maka akan menampilkan data yang baru diinputkan
11. Jika pilih no 3, maka akan menampilkan data yang sama dengan pre-order
12. Jika pilih no 4, maka akan menampilkan data yang sama, hanya saja urutannya yang
berbeda (dibalik)
13. Jika pilih no 5, maka akan mencari data yang kita inputkan
14. Jika pilih no 6, maka akan menghapus data tertentu yang ingin kita hapus
15. Menyimpan data
16. Jika pilih no 7, maka akan menghapus semua data yang ada dan tree akan
dikosongkan
17. Jika pilih no 8, maka akan keluar dari program
18. Output program
19. End
Penjelasan Program :
Tugas 1 adalah program tree yang menyediakan menu untuk menghapus node dan
mengkosongkan tree. Perintah sintaks untuk menghapus node yaitu terdapat di dalam void
hapus dan script hapus(&pohon, del); . Perintah sintaks untuk mengkosongkan tree yaitu
pohon=NULL; .
Tugas 2
Penjelasan Program :
Tugas 2 adalah program tree yang memiliki fungsi untuk searching node. Untuk perintah
searching node dapat menggunakan sintaks f = search( root, no );
if ( f == 0 )
printf( "Node Tidak Ada" );
else
printf( "Node Ada" );
Dari sintaks diatas, jika pencarian bernilai 0 atau tidak ditemukan, maka akan menampilkan
Node Tidak Ada dan selain itu,dengan kata lain node yang dicari tidak 0 (ditemukan) akan
menampilkan Node Ada .
KESIMPULAN
Tree adalah suatu struktur data yang berbentuk pohon terbalik (akarnya terletak diatas)
dan terdiri dari serangkaian node (simpul) yang saling berhubungan.
Binary Tree adalah tree dengan syarat bahwa tiap node hanya boleh memiliki maksimal
dua subtree dan kedua subtree tersebut harus terpisah.
Jenis-jenis Binary Tree ada 3, yaitu Full Binary Tree, Complete Binary Tree, dan Skewed
Binary Tree.
Operasi dalam tree ada 3, yaitu Preorder, Inorder, dan Postorder.
DAFTAR RUJUKAN
1. Tim Asisten Dosen. 2010. Modul IX Tree (Pohon). Malang: Unversitas Negeri Malang.
2. Array dalam Program (Online)
(http://arraydalamprogram.blogspot.com/2010/03/tree.html, diakses pada tanggal 25 April
2015 pukul 19:30).
3. Rangkuman Struktur Data (Online)
(http://hastalavistayahoocom.blogspot.com/2012/07/rangkuman-struktur-data.html,
diakses pada tanggal 29 April 2015 pukul 15:12).