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 数据结构实验之二叉树二:遍历二叉树的主要内容,如果未能解决你的问题,请参考以下文章