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

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

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

根据二叉树的完全先序序列创建二叉树并按照中序后序输出,使用简单递归即可完成,本题纯粹一水题,鉴定完毕。

附代码:
 1 #include <iostream>
 2 #include <cstdio>
 3 
 4 using namespace std;
 5 
 6 struct Tree
 7 {
 8     char c;
 9     Tree *lt,*rt;
10 };
11 
12 Tree *creat(char *&xx)
13 {
14     if(*xx=='\0')
15         return NULL;
16     if(*xx==',')
17     {
18         xx++;
19         return NULL;
20     }
21     Tree *r=new Tree;
22     r->c=*xx++;
23     r->lt=creat(xx);
24     r->rt=creat(xx);
25     return r;
26 }
27 
28 void mout(Tree *r)
29 {
30     if(r==NULL)
31         return ;
32     mout(r->lt);
33     printf("%c",r->c);
34     mout(r->rt);
35 }
36 
37 void hout(Tree *r)
38 {
39     if(r==NULL)
40         return ;
41     hout(r->lt);
42     hout(r->rt);
43     printf("%c",r->c);
44 }
45 
46 int main()
47 {
48     Tree *root;
49     char xx[55],*p;
50     while(scanf("%s",xx)!=EOF)
51     {
52         p=xx;
53         root=creat(p);
54         mout(root);
55         printf("\n");
56         hout(root);
57         printf("\n");
58     }
59     return 0;
60 }
61 
62 /***************************************************
63 User name: ***
64 Result: Accepted
65 Take time: 0ms
66 Take Memory: 156KB
67 Submit time: 2016-11-03 17:44:34
68 ****************************************************/

 

posted @ 2016-11-04 18:27  Leroscox  阅读(661)  评论(0编辑  收藏  举报