Laman

23 Jul 2009

Binary Search Tree

Binary Search Tree(BST) adalah pohon biner dimana nilai semua anak kirinya selalu lebih kecil dari rootnya. Sedangkan anak kanannya selalu lebih besar dari anak kirinya....
Heheehhehe...

Jdi pnjlasannya sperti ini, BST itu adlah pohon biner(pohon yg mmliki anak maksmum dua) yg di stiap ti2knya, semua anak kri dri ti2k tsb nilainya akan slalu lbih kcil dri dri nilai yg ada di ti2k tsb, sdngkan smua anak kanan dri ti2k tsb, nilainya psti lbih besar dri nilai ti2k itu sndiri...
Ngrti kan??
Lngsung ja kita ke pembuatan programnya dengan mnggunakan bhasa C,
Ni dia nih, stelah dberikan tgas untuk mmbuat program BST oleh dosen struktur data ku akhirnya jadilah programnya sbb:


#include
#include
#include

sabit: Fungsi ni brguna untuk pendeklarasian struktur data ny..
typedef struct node{
sabit: struktur data nya terdiri dari tiga nilai, yaitu data yg mrpkan isi nilai dari data tsb, *kiri mrpkn nilai yg mnunjuk ke anak kiri ti2k tsb, *kanan mrpkan nilai yg mnnjuk ke anak kanan ti2k tsb....
int data;
node *kiri;
node *kanan;
}pohon;

sabit:Fungsi ini untuk melakukan insert data
void insert(pohon **batang,int n)

{
pohon *p;
p=(pohon*)malloc(sizeof(pohon));
p->kiri=NULL;
p->kanan=NULL;
if(*batang==NULL){
*batang=p;
(*batang)->data=n;
}
else{
if(n<(*batang)->data)
insert(&(*batang)->kiri,n);
else
insert(&(*batang)->kanan,n);
}
}

sabit:fungsi ini digunakan untuk mencetak/mnamplkan nilainya..
void cetak(pohon **batang)
{
if(*batang==NULL);
else{
if((*batang)->data==NULL)printf("");
else
printf("%d\n",(*batang)->data);
cetak(&(*batang)->kiri);
cetak(&(*batang)->kanan);
}
}

sabit:fungsi ini dgnakan utk mlakukan pnghapusan suatu ti2k..
void delete_nilai(pohon **batang,int n)
{
pohon *bentar;
if((*batang)->data==n){
if((*batang)->kanan!=NULL||(*batang)->kiri!=NULL)
{
if((*batang)->kiri!=NULL)
{
bentar=(*batang)->kiri;
while(bentar->kanan!=NULL)
bentar=bentar->kanan;
}
else
{
bentar=(*batang)->kanan;
while(bentar->kiri!=NULL)
bentar=bentar->kiri;
}
(*batang)->data=bentar->data;
bentar->data=NULL;
}
else
*batang=NULL;
}
else
{
if(n>(*batang)->data)
delete_nilai(&(*batang)->kanan,n);
else
delete_nilai(&(*batang)->kiri,n);
}
}
void main()
{
pohon *akar=NULL;
int pilih,isi,update;
haha:
clrscr();
cetak(&akar);
printf("\n\n\n\n1.Insert\n");
printf("2.Hapus\n");
printf("3.Update\n");
printf("Pilihan Anda=");scanf("%d",&pilih);
switch(pilih){
case 1:
printf("Nilai yang ingin dimasukkan=");scanf("%d",&isi);
insert(&akar,isi);
goto haha;
case 2:
printf("Data mana yang akan dihapus=");scanf("%d",&isi);
delete_nilai(&akar,isi);
goto haha;
case 3:
printf("Data yang ingin di update=");scanf("%d",&isi);
printf("Diganti dengan data=");scanf("%d",&update);
delete_nilai(&akar,isi);
insert(&akar,update);
goto haha;
}
getch();
}

Yah, skianlah program BST nya...
Jika ada ksalahan atau kkurangan mhon kritik dan saranny, smoga bermanfaat...
Maju trus IT Indonesia......

Tidak ada komentar:

Posting Komentar