Senin, 14 November 2011

Program Binary tree/Pohon Biner dengan C++


setelah sekian lama gak posting sama sekali, rasanya dah kangen banget nih mau nulis di blog jelek ini, kali ini ane pengen posting tugas yang dari pak Ery dosen Desain dan Analisa Algoritma ane, dosen yang dingin tapi kalo udah diajak ngobrol pasti lu semua pasti mikir lagi kalo mau bilang dia killer. gua kasih 2 jempol kalo bisa dapat nilai A kalo mata kuliah lu diampu sama dosen ini (mudah2an doi gak denger, hehehe). oke tanpa bertele2 ini nih source code program Binary tree/Pohon biner yang juga belum ane mengerti .hehehehe. tapi jalan koq programnya

#include <iostream.h>
#include <stdio.h>
#include <conio.h>
#include <stdlib.h> // dibutuhkan untuk system("cls");

struct tree_node
{
tree_node* left;
tree_node* right;
int data;

};

tree_node* root;

bool isEmpty()
{return root==NULL;}

void insert(int d)
{
tree_node* t = new tree_node;
tree_node* parent;
t->data = d;
t->left = NULL;
t->right = NULL;
parent = NULL;
if(isEmpty())root = t;
else
{
tree_node* curr;
curr = root;

while(curr!=NULL)
{
parent = curr;
if(t->data > curr->data) curr = curr->right;
else curr = curr->left;
}

if(t->data < parent->data)
parent->left = t;
else
parent->right = t;
}
}

void inorder(tree_node* p)
{
if(p!=NULL)
{
if(p->left)
inorder(p->left);
cout<<" "<<p->data<<" ";
if(p->right)
inorder(p->right);
}
else
return;
}


void print_inorder()
{
inorder(root);
}

int count(tree_node* p)
{
if(p==NULL)return 0;
return count(p->left) + count(p->right) + 1;
}

int height(tree_node* p)
{
if(p==NULL)return 0;
int u = height(p->left),v = height(p->right);
if(u > v)
return u+1;
else
return v+1;
}

void cari_terbesar(tree_node* p)
{
if(p==NULL)
return;
else
if(p->right==NULL)
{
cout<<" "<<p->data<<" ";
return;
}
else
{
cari_terbesar(p->right);
return;
}
}

int main()
{
root=NULL;
int ch,tmp;


while(1)
{
system("cls"); // Saya mengganti scrclr() karena dicompiler sy tidak ada fungsi tersebut
cout<<endl;
cout<<"Menu Utama Operasi Pohon Biner"<<endl;
cout<<"--------------------"<<endl;
cout<<"1. Insert/Tambah Data"<<endl;
cout<<"2. Kunjungan In-Order"<<endl;
//cout<<"3. Kunjungan Pre-Order"<<endl;
//cout<<"4. Kunjungan Post-Order"<<endl;
//cout<<"5. Hapus Data"<<endl;
cout<<"6. Menghitung Jumlah Node"<<endl;
cout<<"7. Menghitung Tinggi Pohon"<<endl;
//cout<<"8. Mencari Data Terkecil"<<endl;
cout<<"9. Mencari Data Terbesar"<<endl;
cout<<"10. Exit"<<endl;
cout<<"Pilihan Anda : ";
cin>>ch;
cout<<endl;
switch(ch)
{
case 1 : cout<<"Masukan Data : ";
cin>>tmp;
insert(tmp);
break;
case 2 : cout<<endl;
cout<<"Kunjungan In-Order"<<endl;
cout<<"---------------"<<endl;
print_inorder();getch();
break;
case 6 : cout<<"Menghitung Jumlah Node"<<endl;
cout<<"------------------"<<endl;
cout<<"Jumlah Node = "<<count(root);
getch();
break;
case 7 : cout<<"Menghitung Tinggi Pohon"<<endl;
cout<<"------------------"<<endl;
cout<<"Tinggi Pohon = "<<height(root);
getch();
break;
case 9 : cout<<"Mecari Data Terbesar"<<endl;
cout<<"------------------"<<endl;
cout<<"Data Terbesar Adalah = "<<endl;
cari_terbesar(root);
getch();
break;
case 10 : return 0;
break;
default: cout<<"Pilihan yang Anda Masukkan salah!"<<endl;
getch();
break;
}
}
}

Semoga Bermafaat ...

Artikel Yang Berhubungan:

8 komentar:

  1. Saya juga dapat tugas seperti ini nih gan,,
    itu programnya untuk pilihan 3,4,5 dan 8 kok dihilangin?

    BalasHapus
  2. sorry bro, ane mumet mu nyelesein programnya. nanti lain waktu kalo ada yg baru ane update lagi dehh..

    BalasHapus
  3. ka...
    mu tanya....
    kalo pas menu insert nya, data yang di masukkin huruf (bukan angka)... kira2 bisa gak ka?
    kalo seandainya bisa, boleh kasi tau coding nya?
    :)

    trimz...

    BalasHapus
    Balasan
    1. bisa bisa integer nya ganti aja sama character

      Hapus
  4. ini pre order, in order sama post order ga ada ya?

    BalasHapus
  5. gan lu di ajar sama pak ery bayu ya ?
    tapi gue dapat nilai A dari dia gan ,
    yang eror mengcopy program dari blog terkadang emang eror , coba kamu perhatikan kembali di C++ nya pasti ada yang berbeda dengan blog nya

    BalasHapus

 
" Blog Pelajar yang selalu ingin belajar "