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

struct tree
 {
  int data;
  tree *sebelahkiri;
  tree *sebelahkanan;
 }*tampung,*sa;
  void ceksebelahkanan();
  void ceksebelahkiri();
  void search();


  int tambahdata;
  tree *node;
  void main()
   {
    clrscr();
    node=new tree;
    cout<<"        masukkan akar            : ";
    cin>>node->data;
    tampung=node;
    sa=tampung;
    node->sebelahkiri=NULL;
    node->sebelahkanan=NULL;
    cout<<"        beri anak         : ";
    cin>>tambahdata;
    search();
    while(tambahdata!=0)
            {
             if(tambahdata>tampung->data)
                ceksebelahkanan();
             else
                ceksebelahkiri();
                cout<<"        beri anak         : ";
                cin>>tambahdata;
                search();
                tampung=node;
       }
      getch();
      }

     void ceksebelahkanan()
       {
             if(tampung->sebelahkanan==NULL)
               {
                cout<<"    "<<tambahdata<<" ini adalah anak dari "<<sa->data<<endl;
                tampung->sebelahkanan=new tree;
                tampung=tampung->sebelahkanan;
                tampung->data=tambahdata;
                tampung->sebelahkiri=NULL;
                tampung->sebelahkanan=NULL;
                sa=node;
               }
             else
                {
                 if(tambahdata>tampung->data)
                  {
                   tampung=tampung->sebelahkanan;
                   sa=tampung;
                   if(tambahdata>tampung->data)
                        ceksebelahkanan();
                        else
                        ceksebelahkiri();
                 }
                 else
                  {
                        tampung=tampung->sebelahkiri;
                        sa=tampung;
                        ceksebelahkiri();
                  }
                 }
            }
                         void ceksebelahkiri()
            {
                         if(tampung->sebelahkiri==NULL)
                          {
                           cout<<"   "<<tambahdata<<" ini adalah anak dari "<<sa->data<<endl;
                           tampung->sebelahkiri=new tree;
                           tampung=tampung->sebelahkiri;
                           tampung->data=tambahdata;
                           tampung->sebelahkanan=NULL;
                           tampung->sebelahkiri=NULL;
                           sa=node;
                          }

             else{
                 if(tambahdata<tampung->data)
                  {
                        tampung=tampung->sebelahkiri;
                        sa=tampung;
                        if(tambahdata>tampung->data)
                        ceksebelahkanan();
                        else
                        ceksebelahkiri();
                  }
                 else
                  {
                        tampung=tampung->sebelahkanan;
                        sa=tampung;
                        ceksebelahkanan();}
                  }
            }

       void search()
            {
               tampung=node;
               while(tampung!=NULL)
            {
              if(tambahdata==tampung->data)
                {
                cout<<"Tidak boleh sama";
                cout<<"\ntambah anak    :";
                cin>>tambahdata;
                search();
                break;
                }
              else
              {
                if(tambahdata>tampung->data)
                        tampung=tampung->sebelahkanan;
                else
                        tampung=tampung->sebelahkiri;
             }
       }
             tampung=node;

       }


:. Selamat Mencoba .: