码迷,mamicode.com
首页 > 其他好文 > 详细

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

时间:2016-11-04 20:40:01      阅读:404      评论:0      收藏:0      [点我收藏+]

标签:int   index.php   ati   dex   eof   example   root   new   ace   

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

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 ****************************************************/

 

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

标签:int   index.php   ati   dex   eof   example   root   new   ace   

原文地址:http://www.cnblogs.com/Mimick/p/6031387.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!