Rabu, 11 Juni 2014

Program binery tree ( pohon biner )

pohon biner ( binery tree ) - reza pratama
Gue mau share nih program tentang tugas struktur data mengenai pohon biner, ini tugas gue pas di semester 2, mungkin aja ada yang lagi butuh buat tugas juga hehehe...

Tapi sebelumnya gue jilatin jelasin dulu apa itu pohon biner. Pohon biner ( binary tree ) adalah sebuah pohon struktur data dimana setiap simpul memiliki paling banyak dua anak. Secara khusus anaknya dinamakan kiri dan kanan. Penggunaan secara umum pohon biner adalah pohon biner terurut, yang lainnya adalah heap biner ( menurut wikipedia si begitu ).

Nah pada kunjungan pohon biner salah satu operasi yang sering dilakukan itu ada 3 bentuk :

Number One

kunjungan secara preorder ( Depth First Order ), mempunyai urutan :
a. cetak isi simpul yang dikunjungi ( simpul akar )
b. kunjungi cabang kiri
c. kunjungi cabang kanan

Number Two

kunjungan secara inorder ( symmetric order ), mempunyai urutan :
a. kunjungi cabang kiri
b. cetak isi simpul yang dikunjungi ( simpul akar )
c. kunjungi cabang kanan

Number Three

kunjungan secara postorder, mempunyai urutan :
a. kunjungi cabang kiri
b. kunjungi cabang kanan
c. cetak isi simpul ynag dikunjungi ( simpul akar )
Disini gue posting codingannya menurut 3 bentuk operasi pada pohon biner ( binery tree ), hitung jumlah node dan cari node terkecil.
Script:
#include <conio.h>
#include <iostream.h>

typedef struct Node{
 int data;
 Node *kiri;
 Node *kanan;
 }Node;

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

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

int count(Node *root){
 if (root == NULL) return 0;
 return count(root->kiri) + count(root->kanan) + 1;
}

Node *FindMin(Node *root){
 if(root == NULL)
 return NULL;
 else if(root->kiri == NULL)
 return root;
 else
 return FindMin(root->kiri);
}

void main(){
 int pil;
 Node *pohon ;
 pohon=NULL;
 do{
clrscr();
int data;
cout<<"PROGRAM POHON BINER ( BINERY TREE ) \n-----------------------------------\n";
cout<<" Pilih Menu :\n";
cout<<" 1. Tambah Node\n";
cout<<" 2. Lihat Pre-order\n";
cout<<" 3. Lihat In-order\n";
cout<<" 4. Lihat Post-order\n";
cout<<" 5. Hitung Jumlah Node\n";
cout<<" 6. Cari Node Terkecil\n";
cout<<" 7. Exit\n";
cout<<" -->> : ";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!";
         break;
case 3 : if(pohon!=NULL)inOrder(pohon);
         else cout<<"masih kosong!";
         break;
case 4 : if(pohon!=NULL)
         postOrder(pohon);
         else
         cout<<"masih kosong!";
         break;
case 5 : if(pohon!=NULL)
         cout<<"Jumlah data : "<<count(pohon) ;
         else cout<<"masih kosong!";
         break;
case 6 : if(pohon!=NULL){
         Node *t = FindMin(pohon);
         cout<<"Node terkecil : "<< t->data; }
         else cout<<"masih kosong!";
         break;
         }
         getch();
 }while(pil!=7);
}
Hasilnya:hasil pohon biner ( binery tree ) - reza pratama
Oke yang diatas itu hasil program yang telah dijalankan, kurang garem baik apa gue sama elo ? :D semoga ini membantu elo buat ngelarin tugas elo, jika ada kesulitan silahkan berkomentar, thanks.

Related Posts

Program binery tree ( pohon biner )
4/ 5
Oleh

Subscribe via email

Like the post above? Please subscribe to the latest posts directly via email.

3 komentar

Tulis komentar
avatar
1:13 AM

Thanks atas informasi yang sudah dishare....

Reply
avatar
8:25 PM

Thanks gan, sangat membantu

Reply
avatar
12:33 PM

Bang kan kunjungan ada levelorder, ko gaada diprogramnya bang? Please penjelasannya bang

Reply

Silahkan berkomentar disini, dengan menggunakan kata-kata yang sopan. Tidak dibolehkan menyebar link dan komentar spam, Thanks.