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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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 ****************************************************/

 

以上是关于SDUT 3341 数据结构实验之二叉树二:遍历二叉树的主要内容,如果未能解决你的问题,请参考以下文章

SDUT-3441_数据结构实验之二叉树二:遍历二叉树

SDUT 3343 数据结构实验之二叉树四:还原二叉树

SDUT 3344 数据结构实验之二叉树五:层序遍历

SDUT 3342 数据结构实验之二叉树三:统计叶子数

数据结构之二叉树二叉树的创建遍历等操作

SDUT 3346 数据结构实验之二叉树七:叶子问题