二叉树模板复习;
根据先序创建二叉树,并输出中序后序遍历;
自己不用指针来写的一个版本,非常好记加好写;
样例:ABD##EG###C#F##
输出:
const int N=100;
struct node
{
char data;
int l,r;
}tr[N];
int idx;
void creatBT(int root)
{
char c;
cin>>c;
if(c=='#')return;
tr[root].data=c;
tr[root].l=++idx;
tr[root].r=++idx;
creatBT(tr[root].l);
creatBT(tr[root].r);
}
void preorder(int root)
{
if(tr[root].data)cout<<tr[root].data;
if(tr[root].l)preorder(tr[root].l);
if(tr[root].r)preorder(tr[root].r);
}
void midorder(int root)
{
if(tr[root].l)midorder(tr[root].l);
if(tr[root].data)cout<<tr[root].data;
if(tr[root].r)midorder(tr[root].r);
}
void postorder(int root)
{
if(tr[root].l)postorder(tr[root].l);
if(tr[root].r)postorder(tr[root].r);
if(tr[root].data)cout<<tr[root].data;
}
signed main()
{
quick_cin();
creatBT(0);
preorder(0);
cout<<endl;
midorder(0);
cout<<endl;
postorder(0);
return 0;
}