P1030 求先序排列 /// 二叉树的遍历
题目大意:
给一棵树的中序排列 后序排列,求这棵树的先序排列
https://www.luogu.org/problemnew/show/P1030
后序排列中 子树的最高层是一段排列中的最后一个
中序排列中 树(子树)的排列被其最高层分为左子树和右子树
即一棵树为
1
/ \
2 3
/ \
4 5
则其后序排列为 2 4 5 3 1
中序排列为 2 1 4 3 5
过程如下,()内为已得到的部分先序排列
首先后序找到 54321 排列的最后一个为1,即最高层 (1)
则中序中 21435 被1分为 2 和 435,即左子树为2右子树为435
那么后序中去掉1后的2453,则对应分为 2 和 453 (12)
后序中剩 453 ,即3为最高层(123)
中序中435,分为 4 和 5
后序中对应地分为 4 和 5 (12345)
#include <bits/stdc++.h>
using namespace std;
char in[],po[];
void pre(int L1,int R1,int L2,int R2)
{
if(L1>R1) return;
printf("%c",po[R2]);
int i;
for(i=L1;i<=R1;i++)
if(in[i]==po[R2]) break;
int j=L2+i-L1;
if(i>L1) pre(L1,i-,L2,j-);
if(i<R1) pre(i+,R1,j,R2-);
}
int main()
{
while(~scanf("%s%s",in,po)) {
int len=strlen(in)-;
pre(,len,,len);
cout<<endl;
} return ;
}
P1030 求先序排列 /// 二叉树的遍历的更多相关文章
- 二叉树的遍历 &【NOIP2001普及组】& 洛谷 P1030 求先序排列
题目链接 https://www.luogu.org/problemnew/show/P1030 模板题 先讲一下二叉树的遍历 二叉树的遍历 分类 性质 求法 分为三类: 先序遍历(PreOrder) ...
- P1030 求先序排列 P1305 新二叉树
题目描述 给出一棵二叉树的中序与后序排列.求出它的先序排列.(约定树结点用不同的大写字母表示,长度\le 8≤8). 输入输出格式 输入格式: 22行,均为大写字母组成的字符串,表示一棵二叉树的中序与 ...
- 洛谷:P1087 FBI树 P1030 求先序排列 P1305 新二叉树
至于为啥把这三个题放到一起,大概是因为洛谷的试炼场吧,三道树的水题,首先要理解 先序中序后序遍历方法. fbi树由于数量小,在递归每个区间时,暴力跑一遍区间里的数,看看是否有0和1.至于递归的方法,二 ...
- 洛谷 P1030 求先序排列 Label:None
题目描述 给出一棵二叉树的中序与后序排列.求出它的先序排列.(约定树结点用不同的大写字母表示,长度<=8). 输入输出格式 输入格式: 2行,均为大写字母组成的字符串,表示一棵二叉树的中序与后序 ...
- 洛谷P1030求先序排列
题目描述 给出一棵二叉树的中序与后序排列.求出它的先序排列.(约定树结点用不同的大写字母表示,长度≤8. 输入输出格式 输入格式: 2行,均为大写字母组成的字符串,表示一棵二叉树的中序与后序排列. 输 ...
- P1030 求先序排列
题目描述 给出一棵二叉树的中序与后序排列.求出它的先序排列.(约定树结点用不同的大写字母表示,长度<=8). 输入输出格式 输入格式: 2行,均为大写字母组成的字符串,表示一棵二叉树的中序与后序 ...
- 洛谷 P1030 求先序排列
题目描述 给出一棵二叉树的中序与后序排列.求出它的先序排列.(约定树结点用不同的大写字母表示,长度<=8). 输入输出格式 输入格式: 2行,均为大写字母组成的字符串,表示一棵二叉树的中序与后序 ...
- 洛谷——P1030 求先序排列
https://www.luogu.org/problem/show?pid=1030#sub 题目描述 给出一棵二叉树的中序与后序排列.求出它的先序排列.(约定树结点用不同的大写字母表示,长度< ...
- P1030 求先序排列 (一个非常棒的写法)
理论正确就是真正的正确,误... 就是找嘛,找到每一个对应字符,然后对应的左右子树的区间,然后就可以了. #include <bits/stdc++.h> using namespace ...
随机推荐
- [JZOJ6353] 【NOIP2019模拟】给
题目 题目大意 对于所有的整数\(k \in [1,n]\),求叶子结点有\(k\)个的二叉树个数,满足每个非叶子结点都有两个儿子,并且对于每个叶子结点,从根节点到它经过的向左的边数少于等于\(m\) ...
- jQuery - 事件相关
<script> $(function() { // 事件绑定 // 第一种方式 $("#btn").click(function() { alert("1 ...
- kafka的简单命令
启动kafka自带的zookeeper ./bin/zookeeper-server-start.sh config/zookeeper.properties & 启动kafka ./bin/ ...
- C++之内存分区
- ionic-CSS:ionic checkbox(复选框)
ylbtech-ionic-CSS:ionic checkbox(复选框) 1.返回顶部 1. ionic checkbox(复选框) ionic 里面的 Checkbox 和普通的 Checkbox ...
- iOS开发静态库冲突——如何查看静态库(.O)中方法名
1.bug产生 应用第三方静态库之后提示冲突错误: 2.bug分析 一般会提示哪两个库冲突: CameraShowGLView.o是自己创建的类编译生成的: libLechangeSDK.a是添加的静 ...
- STM32 Keil仿真调试
引用:http://blog.sina.com.cn/s/blog_3c63d2bd0102vt9a.html 问题描述:使用MDK进行软件设计时没有使用ST官方的模板而是手动建立的工程,使用ST官方 ...
- Lunascape:将FireFox、Safari和IE合为一体的浏览器
转自:http://blog.bingo929.com/lunascape-firefox-safari-ie-all-in-one.html 作为前端开发/网页设计师,电脑中总是安装着各种不同内核渲 ...
- 2008年国外50个最佳CSS设计欣赏
这50个CSS网站是由WebDesignerWall评选出来的,很具参考价值.我们在欣赏的同时,也能从中吸取很多灵感,也能从它们的源代码中学习更高级的CSS技术.今年,越来越多的设计师开始使用超大的背 ...
- Docker学习のDocker镜像
一.列出镜像 命令:docker images [optsions] [repositort] -a 标识列出所有 -f 写过滤条件 --no-trunc 不截断id -q 只显示唯一id rep ...