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 }

 

相关文章
|
6月前
|
存储 C++
【C++练级之路】【Lv.14】二叉搜索树(进化的二叉树——BST)
【C++练级之路】【Lv.14】二叉搜索树(进化的二叉树——BST)
【C++练级之路】【Lv.14】二叉搜索树(进化的二叉树——BST)
|
编译器
深入探究中序遍历(Inorder Traversal):揭开二叉树的秘密
中序遍历是二叉树遍历中的重要方法,通过按照一定的顺序访问节点,我们可以更好地理解和分析树的结构。中序遍历在解决各种问题时发挥着关键作用,例如表达式求值和二叉搜索树的排序。通过深入理解中序遍历的概念和实现方式,希望本文能够帮助您更好地理解中序遍历,并在日后的编程实践中得到应用。
969 0
|
算法
当二叉树的树叶飘落:深入探究后序遍历
后序遍历是一种深度优先遍历(Depth-First Traversal)方法,它的特点是对于每个节点的访问顺序是从左子节点到右子节点,最后再访问节点本身。具体来说,后序遍历按照以下顺序访问节点:
66 0
|
算法 程序员
程序员怎能不会二叉树系列(一)简单了解二叉树
程序员怎能不会二叉树系列(一)简单了解二叉树
中序线索二叉树的实现(源代码以及讲解)
中序线索二叉树的实现(源代码以及讲解)
156 0
leetcode105/1382-构建二叉树与二叉平衡树(人生苦短,速速递归)
leetcode105/1382-构建二叉树与二叉平衡树(人生苦短,速速递归)
leetcode105/1382-构建二叉树与二叉平衡树(人生苦短,速速递归)
二叉树模板套题——相同的树的应用
二叉树模板套题——相同的树的应用
58 0
|
算法 前端开发 Go
【刷力扣 TS 版】难度 简单,二叉树的前序遍历&后序遍历
【刷力扣 TS 版】难度 简单,二叉树的前序遍历&后序遍历
【刷力扣 TS 版】难度 简单,二叉树的前序遍历&后序遍历
|
前端开发
前端知识案例-二叉树的遍历(前序 中序 后序)
前端知识案例-二叉树的遍历(前序 中序 后序)
70 0
前端知识案例-二叉树的遍历(前序 中序 后序)
|
存储
【2020团体程序设计天梯赛】L2-3 完全二叉树的层序遍历(后序遍历转层次遍历)
【2020团体程序设计天梯赛】L2-3 完全二叉树的层序遍历(后序遍历转层次遍历)
193 1