SDUT 3341 数据结构实验之二叉树二:遍历二叉树

时间:2021-03-28 16:44:44

数据结构实验之二叉树二:遍历二叉树

Time Limit: 1000MS Memory Limit: 65536KB

Problem Description

已知二叉树的一个按先序遍历输入的字符序列,如abc,,de,g,,f,,, (其中,表示空结点)。请建立二叉树并按中序和后序的方式遍历该二叉树。

Input

连续输入多组数据,每组数据输入一个长度小于50个字符的字符串。

Output

每组输入数据对应输出2行:
第1行输出中序遍历序列;
第2行输出后序遍历序列。

Example Input

abc,,de,g,,f,,,

Example Output

cbegdfa
cgefdba DQE 根据二叉树的完全先序序列创建二叉树并按照中序后序输出,使用简单递归即可完成,本题纯粹一水题,鉴定完毕。 附代码:
 #include <iostream>
#include <cstdio> using namespace std; struct Tree
{
char c;
Tree *lt,*rt;
}; Tree *creat(char *&xx)
{
if(*xx=='\0')
return NULL;
if(*xx==',')
{
xx++;
return NULL;
}
Tree *r=new Tree;
r->c=*xx++;
r->lt=creat(xx);
r->rt=creat(xx);
return r;
} void mout(Tree *r)
{
if(r==NULL)
return ;
mout(r->lt);
printf("%c",r->c);
mout(r->rt);
} void hout(Tree *r)
{
if(r==NULL)
return ;
hout(r->lt);
hout(r->rt);
printf("%c",r->c);
} int main()
{
Tree *root;
char xx[],*p;
while(scanf("%s",xx)!=EOF)
{
p=xx;
root=creat(p);
mout(root);
printf("\n");
hout(root);
printf("\n");
}
return ;
} /***************************************************
User name: ***
Result: Accepted
Take time: 0ms
Take Memory: 156KB
Submit time: 2016-11-03 17:44:34
****************************************************/