1034: 递归4(二叉树的后序遍历)
来源:互联网 发布:ubuntu命令行更新软件 编辑:程序博客网 时间:2024/06/18 03:08
时间限制: 1 Sec 内存限制: 128 MB
提交: 597 解决: 429
[提交][状态][讨论版]
题目描述
【题意】
二叉树是每个内部结点最多只有两个子结点且两个子结点有序的树。如下图就是一棵二叉树:
对于一棵二叉树,有三种基本遍历方式:1.前序遍历:先访问根结点,然后再前序遍历左子树,最后前序遍历右子树;2.中序遍历:先中序遍历左子树,然后访问根结点,最后中序遍历右子树;3.后序遍历:先后序遍历左子树,然后后序遍历右子树,最后访问根结点。对于上图,前序遍历的结果是ABDEHCFGI。中序遍历的结果是DBEHAFCIG,后序遍历的结果是DHEBFIGCA。现在给出二叉树的前序和中序遍历,请输出相应的后序遍历。
【输入格式】
第一行前序遍历的结果
第二行中序遍历的结果
都是大写字母,且结点的标识不重复,最多只有100个结点。
【输出格式】
输出后序遍历的结果
【输入样例】
ABDEHCFGI
DBEHAFCIG
【输出样例】
DHEBFIGCA
之前也写过二叉树的遍历的问题,这题是先序中序求后序的遍历结果,也是用的递归的思路。
#include<iostream>#include<cstring>#include<algorithm>#include<cstdio>#include<cmath>using namespace std;char a[100],b[100],c[100];int al,bl,k[100],l;void dfs(int la,int ra,int lb,int rb){ if(la>ra) return ; int t=k[a[la]]-lb; dfs(la+1,la+t,lb,k[a[la]]-1); dfs(la+t+1,ra,k[a[la]]+1,rb); c[++l]=a[la];}int main(){ scanf("%s",a+1),al=strlen(a+1); scanf("%s",b+1),bl=strlen(b+1); for(int i=1;i<=bl;i++) k[b[i]]=i;l=0; dfs(1,al,1,bl); for(int i=1;i<=l;i++) printf("%c",c[i]);}
阅读全文
0 0
- 1034: 递归4(二叉树的后序遍历)
- caioj1034:递归4(二叉树的后序遍历)
- 二叉树的后序遍历(递归)
- 二叉树的后序遍历(非递归)
- 二叉树的遍历(后序)-非递归实现
- CAIOJ1034 二叉树的后序遍历(经典递归)
- 二叉树非递归后序遍历(非递归遍历中最麻烦的一个)
- 二叉树的后序递归,非递归遍历
- 二叉树T 的先序遍历、中序遍历、后序遍历(递归实现)
- 二叉树遍历-后序遍历(非递归)
- 二叉树的非递归遍历(后序遍历的经典解法)
- 二叉树的先序/中序/后序(递归、非递归)+层序遍历
- 二叉树的创建,遍历(前序,中序,后序)-递归 非递归
- 二叉树的前序、中序、后序(递归、非递归)遍历java实现
- 数据结构:二叉树的前序,中序,后序遍历(递归和非递归)
- 二叉树的递归和非递归遍历(前序、中序、后序)
- 二叉树的前序、中序、后序遍历(递归&非递归)
- 二叉树的前序、中序、后序遍历(递归与非递归)
- ACM第二次WXYZ
- 顺序表应用1:多余元素删除之移位算法
- Cena、Lemon自动AC机
- [bzoj1212] [HNOI2004]L语言(trie+dp)
- SSL P2034 最长链
- 1034: 递归4(二叉树的后序遍历)
- ThreadLocal
- java实现快速排序算法
- Python基本语法_强制数据类型转换
- thinkphp3.2 I('get.id') 在 ningx代理apache下面错误 GET POST参数都变成_URL_ 解决方法 I函数
- XML文档中的字符引用和实体引用
- HDU
- hdu 4431 模拟
- ES6常用知识点概述