Saturday, April 21, 2012

Program in C for Binary Search Tree



#include<iostream.h>
#include<conio.h>
#include<alloc.h>

struct tree
 {
  int data;
  tree *left;
  tree *right;
 }*sptr,*q;
  void rightcheck();
  void leftcheck();
  void search();

  int insdata;
  tree *node;
  void main()
   {
    clrscr();
    node=new tree;
    cout<<"   PLEASE  PUT  THE root->>";
    cin>>node->data;
    sptr=node;
    q=sptr;
    node->left=NULL;
    node->right=NULL;
    cout<<"   GIVE THE child->>";
    cin>>insdata;
    search();
    while(insdata!=0)
    {
     if(insdata>sptr->data)
        rightcheck();
     else
        leftcheck();
        cout<<"   GIVE  THE  child->>";
        cin>>insdata;
        search();
        sptr=node;
       }
      getch();
      }
     void rightcheck()
       {
     if(sptr->right==NULL)
       {
        cout<<"    "<<insdata<<" IS THE  RIGHT  child of "<<q->data<<endl;
        sptr->right=new tree;
        sptr=sptr->right;
        sptr->data=insdata;
        sptr->left=NULL;
        sptr->right=NULL;
        q=node;
       }
     else
        {
         if(insdata>sptr->data)
          {
           sptr=sptr->right;
           q=sptr;
           if(insdata>sptr->data)
        rightcheck();
        else
        leftcheck();
         }
         else
          {
        sptr=sptr->left;
        q=sptr;
        leftcheck();
          }
         }
    }
         void leftcheck()
    {
         if(sptr->left==NULL)
          {
           cout<<"   "<<insdata<<" IS THE LEFT child of "<<q->data<<endl;
           sptr->left=new tree;
           sptr=sptr->left;
           sptr->data=insdata;
           sptr->right=NULL;
           sptr->left=NULL;
           q=node;
          }
     else{
         if(insdata<sptr->data)
          {
        sptr=sptr->left;
        q=sptr;
        if(insdata>sptr->data)
        rightcheck();
        else
        leftcheck();
          }
         else
          {
        sptr=sptr->right;
        q=sptr;
        rightcheck();}
          }
    }

       void search()
    {
       sptr=node;
       while(sptr!=NULL)
    {
      if(insdata==sptr->data)
        {
        cout<<"This is not insertable.";
        cout<<"\nInsert child ";
        cin>>insdata;
        search();
        break;
        }
      else
      {
        if(insdata>sptr->data)
        sptr=sptr->right;
        else
        sptr=sptr->left;
     }
       }
     sptr=node;

       }
Output of this Program is:


No comments:

Post a Comment