codevs 2010 求后序遍历

简介: 时间限制: 1 s空间限制: 64000 KB题目描述 Description输入一棵二叉树的先序和中序遍历序列,输出其后序遍历序列。输入描述 Input Description共两行,第一行一个字符串,表示树的先序遍历,第二行一个字符串,表示树的中序遍历。

时间限制: 1 s空间限制: 64000 KB
题目描述 Description
输入一棵二叉树的先序和中序遍历序列,输出其后序遍历序列。
输入描述 Input Description
共两行,第一行一个字符串,表示树的先序遍历,第二行一个字符串,表示树的中序遍历。
输出描述 Output Description
仅一行,表示树的后序遍历序列。
样例输入 Sample Input
abdehicfg
dbheiafcg
样例输出 Sample Output
dhiebfgca
数据范围及提示 Data Size & Hint
输入长度不大于255。

 1 #include<stdio.h>
 2 #include<string.h>
 3 #include<malloc.h>
 4 typedef char ElemType;
 5 typedef struct node 
 6 {    
 7     ElemType data;            //数据元素
 8     struct node *lchild;    //指向左孩子结点
 9     struct node *rchild;    //指向右孩子结点
10 } BTNode;
11 BTNode *CreateBT1(char *pre,char *in,int n)
12 /*pre存放先序序列,in存放中序序列,n为二叉树结点个数,
13 本算法执行后返回构造的二叉链的根结点指针*/
14 {
15     BTNode *s;
16     char *p;
17     int k;
18     if (n<=0) return NULL;
19     s=(BTNode *)malloc(sizeof(BTNode));        //创建二叉树结点*s
20     s->data=*pre;
21     for (p=in;p<in+n;p++)                    //在中序序列中找等于*ppos的位置k
22         if (*p==*pre)                        //pre指向根结点
23             break;                            //在in中找到后退出循环
24     k=p-in;                                    //确定根结点在in中的位置
25     s->lchild=CreateBT1(pre+1,in,k);        //递归构造左子树
26     s->rchild=CreateBT1(pre+k+1,p+1,n-k-1); //递归构造右子树
27     return s;
28 }
29 void PostOrder(BTNode *b) /*后序遍历递归算法*/
30 {
31     if (b!=NULL)  
32     {
33         PostOrder(b->lchild);
34         PostOrder(b->rchild);
35         printf("%c",b->data); /*访问根结点*/
36     }
37 }
38 int main(int argc, char *argv[])
39 {
40     freopen("2010.in","r",stdin);
41     char pre[260],in[260];
42     BTNode *root;
43     
44     scanf("%s%s",pre,in);
45     root=CreateBT1(pre,in,strlen(in));
46     PostOrder(root);
47     return 0;
48 }

 

相关文章
|
7月前
|
算法 vr&ar 图形学
☆打卡算法☆LeetCode 145. 二叉树的后序遍历 算法解析
☆打卡算法☆LeetCode 145. 二叉树的后序遍历 算法解析
二叉树相关问题细谈递归(下)
二叉树相关问题细谈递归(下)
68 0
|
存储
二叉树相关问题细谈递归(上)
二叉树相关问题细谈递归
75 0
|
程序员
程序员怎能不会二叉树系列(二)二叉树的四种遍历
程序员怎能不会二叉树系列(二)二叉树的四种遍历
leetcode105/1382-构建二叉树与二叉平衡树(人生苦短,速速递归)
leetcode105/1382-构建二叉树与二叉平衡树(人生苦短,速速递归)
leetcode105/1382-构建二叉树与二叉平衡树(人生苦短,速速递归)
|
C语言
二叉树的遍历(前序、中序、后序)| C语言
二叉树的遍历(前序、中序、后序)| C语言
268 0
|
C++
由后序遍历和中序遍历构建二叉树(C++语言)
由后序遍历和中序遍历构建二叉树(C++语言)
93 0
|
C++
由前序遍历和中序遍历构建二叉树(C++语言)
由前序遍历和中序遍历构建二叉树(C++语言)
137 0
|
算法 前端开发 程序员
「LeetCode」145-二叉树的后序遍历⚡️
「LeetCode」145-二叉树的后序遍历⚡️
126 0
「LeetCode」145-二叉树的后序遍历⚡️
|
算法 前端开发 程序员
「LeetCode」94-二叉树的中序遍历⚡️
「LeetCode」94-二叉树的中序遍历⚡️
97 0
「LeetCode」94-二叉树的中序遍历⚡️