给定一个先序序列,要根据这个序列建立二叉树,然后中序输出,这一题关键是递归的思想,当然非递归也可以,递归的话,这一题给我的启示那就是,可以让最后递归的返回值传给根,以便于最后的输出!
#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;
}