給定一個先序序列,要根據這個序列建立二叉樹,然后中序輸出,這一題關鍵是遞歸的思想,當然非遞歸也可以,遞歸的話,這一題給我的啟示那就是,可以讓最后遞歸的返回值傳給根,以便于最后的輸出!
 #include<iostream>
using namespace std;
//根據先序遍歷遞歸建立二叉樹,然后中序輸出即可
struct Tree
{
 Tree *lnode;
 Tree *rnode;
 char data;
}tree;
Tree *root;
Tree *Root;
char str[103];
int id;
Tree *work()
{
  Tree *root;
  if(str[id++]=='#') root=NULL;
  else
  {
      root=new Tree;
      root->data=str[id-1];
      root->lnode=work();
      root->rnode=work();
  }
  return root;
}
void middisp(Tree *p)  //遞歸的形式都忘了
{
 if(p!=NULL)
  { middisp(p->lnode);
    cout<<p->data<<" ";
    middisp(p->rnode);
  }
}
int main()
{
   
    Tree *Root;
    while(cin>>str)
    {
      id=0;
      Root=work();
      middisp(Root);
      cout<<endl;
    }
    system("pause");
    return 0;
}