数据结构实验之二叉树二:遍历二叉树 逃离我推掉我的手 2022-07-16 11:54 167阅读 0赞 ### 数据结构实验之二叉树二:遍历二叉树 ### Time Limit: 1000MS Memory Limit: 65536KB [Submit][] [Statistic][] #### Problem Description #### 已知二叉树的一个按先序遍历输入的字符序列,如abc,,de,g,,f,,, (其中,表示空结点)。请建立二叉树并按中序和后序的方式遍历该二叉树。 #### Input #### 连续输入多组数据,每组数据输入一个长度小于50个字符的字符串。 #### Output #### 每组输入数据对应输出2行: 第1行输出中序遍历序列; 第2行输出后序遍历序列。 #### Example Input #### abc,,de,g,,f,,, #### Example Output #### cbegdfacgefdba \#include <stdio.h> char st\[150\]; int g=0; typedef struct node \{ int data; struct node \*lchild,\*rchild; \}Tree; struct node \*creat(Tree \*p) \{ char c = st\[g++\]; if(c==','||c=='\\0') \{ return NULL; \} else \{ p = new Tree; p->data = c; p->lchild = creat(p->lchild); p->rchild = creat(p->rchild); \} return p; \} void interval(Tree \*p) \{ if(p) \{ interval(p->lchild); printf("%c",p->data); interval(p->rchild); \} \} void final(Tree \*p) \{ if(p) \{ final(p->lchild); final(p->rchild); printf("%c",p->data); \} \} int main() \{ while(~scanf("%s",st)) \{ g = 0; Tree \*p; p = creat(p); interval(p); printf("\\n"); final(p); printf("\\n"); \} return 0; \} [Submit]: http://www.sdutacm.org/onlinejudge2/index.php/Home/Contest/contestsubmit/cid/1845/pid/3341.html [Statistic]: http://www.sdutacm.org/onlinejudge2/index.php/Home/Contest/conteststatus/cid/1845/pid/3341.html
还没有评论,来说两句吧...