codevs 1013 求先序排列(二叉树遍历)
Description
Input
Output
Sample Input
BADC
BDCA
Sample Output
ABCD
思路
我们知道,前序遍历(PreOrder):根节点->左子树->右子树;中序遍历(InOrder):左子树->根节点->右子树;(PostOrder)后序遍历:左子树->右子数->根节点。故PostOrder的最后一个数为树根。由PostOrder找出树根后,可根据InOrder中分出树根的左右子树。InOrder中,树根左边为其左子树,右边为右子树。例如样例中:
in : BADC
post:BDCA
左子树为B,右子树为DC;在InOrder中找根的位置pos;
则左子树中序序列为In.substr(0,pos),后序序列为Post.substr(0,pos)
右子树的先序序列为In.subst(pos+1,len-pos-1),后序序列为post.substr(pos,len-pos-1)
通过递归不断重复以后步骤,当串为空时退出
#include<bits/stdc++.h>
using namespace std;
string in,post;
void pre(string in,string post)
{
if (post.empty()) return;
int pos,len = post.size();
char ch = post[len-1];
cout << ch;
pos = in.find(ch);
pre(in.substr(0,pos),post.substr(0,pos));
pre(in.substr(pos + 1,len - pos - 1),post.substr(pos,len - pos - 1));
}
int main()
{
cin >> in >> post;
pre(in,post);
return 0;
}
#include<bits/stdc++.h>
using namespace std;
const int maxn = 15;
void pre(int N,char a[],char b[])
{
if (N <= 0) return;
int pos;
for (int i = 0;i < N;i++)
if (a[i] == b[N-1]) pos = i;
printf("%c",b[N-1]);
pre(pos,a,b);
pre(N - pos - 1,a + pos + 1,b + pos);
}
int main()
{
char a[maxn],b[maxn];
scanf("%s %s",a,b);
int len = strlen(a);
pre(len,a,b);
return 0;
}
codevs 1013 求先序排列(二叉树遍历)的更多相关文章
- codevs——1013 求先序排列
1013 求先序排列 2001年NOIP全国联赛普及组 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 黄金 Gold 题解 题目描述 Description 给出 ...
- codevs 1013 求先序排列
题目链接:http://codevs.cn/problem/1013/ 题目描述 Description 给出一棵二叉树的中序与后序排列.求出它的先序排列.(约定树结点用不同的大写字母表示,长度< ...
- codevs 1013 求先序排列 2001年NOIP全国联赛普及组 x
题目描述 Description 给出一棵二叉树的中序与后序排列.求出它的先序排列.(约定树结点用不同的大写字母表示,长度<=8). 输入描述 Inpu ...
- P1030 求先序排列 /// 二叉树的遍历
题目大意: 给一棵树的中序排列 后序排列,求这棵树的先序排列 https://www.luogu.org/problemnew/show/P1030 二叉树的四种遍历解说 几种遍历的递归实现 后序排列 ...
- code vs 1013 求先序排列
2001年NOIP全国联赛普及组 题目描述 Description 给出一棵二叉树的中序与后序排列.求出它的先序排列.(约定树结点用不同的大写字母表示,长度<=8). 输入描述 Input De ...
- 如何求先序排列和后序排列——hihocoder1049+洛谷1030+HDU1710+POJ2255+UVA548【二叉树递归搜索】
[已知先序.中序求后序排列]--字符串类型 #1049 : 后序遍历 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 小Ho在这一周遇到的问题便是:给出一棵二叉树的前序和 ...
- [蓝桥杯]ALGO-20.算法训练_求先序排列
问题描述 给出一棵二叉树的中序与后序排列.求出它的先序排列.(约定树结点用不同的大写字母表示,长度<=). 输入格式 两行,每行一个字符串,分别表示中序和后序排列 输出格式 一个字符串,表示所求 ...
- 题解 P1030 【求先序排列】
题解 P1030 [求先序排列] 旧题新解~ 今天做这个题,发现还是没有AC,于是滚回来用了一大堆数据结构A了这个题目,好像复杂度还挺高...... #include <iostream> ...
- Java实现 蓝桥杯VIP 算法训练求先序排列
问题描述 给出一棵二叉树的中序与后序排列.求出它的先序排列.(约定树结点用不同的大写字母表示,长度<=8). 输入格式 两行,每行一个字符串,分别表示中序和后序排列 输出格式 一个字符串,表示所 ...
随机推荐
- 数据字典生成工具之旅(4):NPOI操作EXECL
这篇会介绍NPOI读写EXECL,读写EXECL的组件很多,可以使用微软自己的COM组件EXECL.exe读写,不过这种方式限制很大. 1:客户环境必须装Office(虽然现在机子上不装Office的 ...
- Theano2.1.12-基础知识之使用GPU
来自:http://deeplearning.net/software/theano/tutorial/using_gpu.html using the GPU 想要看GPU的介绍性的讨论和对密集并行 ...
- unity3d Vector3.Lerp解析
Vector3.Lerp:http://www.ceeger.com/Script/Vector3/Vector3.Lerp.html 手册中描述的不是很详细,什么叫“按照数字t在from到to之间插 ...
- requirejs:性能优化-及早并行加载
为了提高页面的性能,通常情况下,我们希望资源尽可能地早地并行加载.这里有两个要点,首先是尽早,其次是并行. 通过data-main方式加载要尽可能地避免,因为它让requirejs.业务代码不必要地串 ...
- 一个用react+nodejs实现的笔记本小应用
寒假回家产品经理一直叮嘱着要继续做学校团队的辣个项目,但是...,我到现在一点都还没做,而且还销声匿迹躲了起来藏了几天,是的我干了票大的,想把项目用一种新的架构实现了,所以这几天一直在偷偷摸摸的做一些 ...
- .NET平台下的微信SDK(Rabbit.WeiXin)开源发布
在上一篇文章<RabbitHub开源情况及计划>上有提及到了一个新的开源项目——微信SDK,经过几天的努力现在开源发布Beta1版本. 目录 前言 特点 功能 支持的消息类型 请求消息 事 ...
- 为什么我们要给父级元素写overflow:hidden
有这样的一种情况,有的时候,我们的父级元素设置了高度,一般来说,父级元素的高度是根据子元素的高度来自适应撑开的,如果我们的父级元素也设置了高度,那么其高度就不会随着子元素的的大小而自适应,也许有的时候 ...
- 【JavaEE企业应用实战学习记录】logFilter
package sanglp.servlet; import javax.servlet.*; import javax.servlet.annotation.WebFilter; import ja ...
- LVS ip-tun服务器脚本
ifconfig tunl0 192.168.10.10 netmask 255.255.255.255 up route add -host 192.168.10.10 dev tunl0 ipvs ...
- 远程登录服务器执行cmd的Python脚本
import paramiko,os,sys ip = raw_input("input ip address :>>>") password = raw_inp ...