1. 程式人生 > >關於二叉樹建立的幾種方法

關於二叉樹建立的幾種方法

1.先根序遞迴法建立二叉樹(針對不需要總是問詢的情況,本人認為是最簡單的一種方法)

CreateTree(node *T)
{
   char a;
   cin>>a;
  if(a=='#')
{
     T=NULL;
}
  else
{
    T=new node;//T=(node *)malloc(sizeof(node));
    T->data=a;
    CreateTree(T->left);
    CreateTree(T->right);
}
}
或者
Node* Create()
{
  node *t=NULL;
   char a;
   cin>>a; 
   if(a!='#')
   {
       t=new node;
       t->data=a;
       bt->left=Create();
       bt->right=Create();
       }
   return t;
}


example:             a

                        b       c                   輸入為ab##c##

2.與使用者互動的方式,根據使用者輸入根節點,data,parent,l/r;

node *find;
CreateTree(node *p)
{
  char sign;
  p=new node();
  cout<<"Input root:";
  cin>>p->data;
  do{
       cout<<"Input data ,parent, L/R:"
       char c;
       int t,par;
       cin>>t>>par>>c;      
      node *temp=new node;
      temp->data=t;
      if(c=='L')
        {
             find->left=temp;
         }
      else
       {
              find->right=temp;
        }
         cout<<"Any else?------y/n";
          cin>>sign;
      }while(sign=='y');
} 
void Find(node *p,int par){
     if(p1!=NULL)
      {
       if(p->data==par)
       {
         find=p;   
         return;
        }
       else
       {
           Find(p->left);
           Find(p->right);
        } 
      }
}