#include <iostream>
#include <string>
using namespace std;
struct node
{
char da;
node *lchild;
node *rchild;
};
//前序遍历
void preorder(node* &re)
{
if(re==NULL)
{
return;
}
cout<<re->da;
preorder(re->lchild);
preorder(re->rchild);
}
//中序遍历
void midorder(node* &mi)
{
if(mi==NULL)
{
return;
}
midorder(mi->lchild);
cout<<mi->da;
midorder(mi->rchild);
}
//后序遍历
void postorder(node* &po)
{
if(po==NULL)
{
return;
}
postorder(po->lchild);
postorder(po->rchild);
cout<<po->da;
}
//树的构建,先序创建
void createtree(node* &tt)
{
char data;
cin>>data;
if(data=='#')
{
tt=NULL;
}
else
{
tt=new node;
tt->da=data;
createtree(tt->lchild);
createtree(tt->rchild);
}
}
//树的销毁,后序删除
void deletetree(node* &tt)
{
if(tt==NULL)
{
return ;
}
deletetree(tt->lchild);
deletetree(tt->rchild);
delete tt;
}
int main()
{
node *head;
createtree(head);
preorder(head);
midorder(head);
postorder(head);
deletetree(head);
return 0;
}