membuat binary tree menggunakan bahasa c

binary search tree merupakan sebuah metode pencarian menggunakan tree atau bentuk pohon. binary tree hanya dapat mengorganisasi hirarki dengan 2 child. implementasi binary tree dilakukan dengan mendefinisikan linked list, masing masing node terdiri dari 3 bagian yakni pointer kanan, data info, pointer kiri


tulisan variabel yang berada di tengan merupakan info dari node tersebut dan lingkaran kecil yang berada di kanan dan kiri merupakan sebuah pointer yang menghubungkan ke anak atau child di bawahnya.

berikut adalah pseudecode  dalam membuat algoritma binary search tree


untuk memperjelas algoritma binary tree berikut adalah sources code binary tree dalam bahasa c



#include "stdio.h";
#include "stdlib.h";

void input();
void preorder(tree);
void inorder(tree);
void postorder(tree );
void tampil();

typedef struct node tree;
struct node{
 char info;
 tree *kanan;
 tree *kiri;
};
tree *baru;
tree *root=NULL;
tree *p,*q;

void main()
{
 input();
 tampil();
}
void  input()
{
 char kar,jwb;
 do{
  fflush(stdin);
 printf("masukan karakter :");
 scanf("%c",&kar);
 baru=(tree *)malloc(sizeof(tree));
 if(baru==NULL)
 { printf("Gagal mengalokasikan");
  exit(0); }
 else
 { baru->info=kar;
     baru->kanan=NULL;
  baru->kiri=NULL;
 }
 
 if(root==NULL)
 {
  root=baru;
 }
 else
 {
  q=root;
  p=root;
  while((q!=NULL)&&(baru->info!=p->info))
  {
   p=q;
   if(baru->info>p->info)
   {
    q=p->kanan;
   }
   else
   {
    q=p->kiri;
   }
  }
  if(p->info!=baru->info)
  {
       if(p->info>baru->info)
     {
   p->kiri=baru;
      }
      else
     {
   p->kanan=baru;
     }
  }
  else
  {puts ("data yang anda masukan sudah ada");}
  
 }
 puts("\nada data lagi?");
 scanf("\n%c",&jwb);
 }while((jwb=='y')||(jwb=='Y'));

}

void tampil()
{
 printf("tampilan secara preorder :");
 preorder(root);
 puts("\n");
 printf("tampilan secara inorder :");
 inorder(root);
 puts("\n");
 printf("tampilan secara postorder :");
 postorder(root);
 puts("\n");
}

void preorder(tree *root)
{
 if(root!=NULL)
 {
  printf("%c",root->info);
  preorder(root->kiri);
  preorder(root->kanan);
 }
}
void inorder(tree *root)
{
 if(root!=NULL)
 {
  inorder(root->kiri);
  printf("%c",root->info);
  inorder(root->kanan);
 }
}
void postorder(tree *root)
{
 if(root!=NULL)
 {
  postorder(root->kiri);
  postorder(root->kanan);
  printf("%c",root->info);
 }
}

Posting Komentar