PTA 天梯赛练习 7-11 玩转二叉树-二叉树重建
以前就思考过这个问题,但是没有深入的想过,这是一种叫二叉树重建的典型题目
如果给出中序和前序,求出后序遍历。
这道题则求的是交换儿子节点的层序遍历。
二叉树的重建应该怎么重建,首先我们知道,先根遍历,最开始的那个一定是根节点,那么,我们可以从先根遍历开始,对于先根遍历的某个节点,寻找他在中根遍历中的位置,这个位置到先根遍历的位置,中间的节点一定是其左儿子节点,而中间节点后面,一定是右儿子节点。、
#include<iostream>
#include<string.h>
#include<algorithm>
#include<stdio.h>
#include<queue>
using namespace std;
const int maxx = ;
int pre[maxx];
int in[maxx];
int pos;
struct node{
int w,l,r;
}tree[maxx];
void build(int l,int r,int n)
{
if (l==r){
tree[n].w=-;//当前节点为空
return;
}
int root=pre[pos++];
tree[n].w=root;//当前节点存储的值
tree[n].l=*n;//这个节点的左儿子节点编号
tree[n].r=*n+;//这个节点的右儿子节点编号
int mid=find(in+,in+r,root)-in;// 得到当前节点在中序遍历数组中的下标
build(l,mid,*n);//重建左子树
build(mid+,r,*n+);//重建右子树
}
void print(){
queue<int>q;
q.push();
int s;
while(!q.empty()){
s=q.front();
q.pop();
if (tree[s].w!=-){
if (s!=){
printf(" ");
}
printf("%d",tree[s].w);
q.push(tree[s].r);
q.push(tree[s].l);
}
}
printf("\n");
}
int main(){
int n;
while(~scanf("%d",&n)){
pos=;
for (int i=;i<=n;i++){
scanf("%d",&in[i]);
}
for (int i=;i<=n;i++){
scanf("%d",&pre[i]);
}
build(,n+,);
print();
}
return ;
}
PTA 天梯赛练习 7-11 玩转二叉树-二叉树重建的更多相关文章
- 『ACM C++』 PTA 天梯赛练习集L1  |  001-006
		
应师兄要求,在打三月底天梯赛之前要把PTA上面的练习集刷完,所以后面的时间就献给PTA啦~ 后面每天刷的题都会把答案代码贡献出来,如果有好的思路想法也会分享一下~ 欢迎大佬提供更好的高效率算法鸭~ - ...
 - 『ACM C++』 PTA 天梯赛练习集L1 | 052-053
		
今日刷题,水题水题 ------------------------------------------------L1-052------------------------------------ ...
 - 『ACM C++』 PTA 天梯赛练习集L1 | 048-49
		
今日刷题048-049 ------------------------------------------------L1-048---------------------------------- ...
 - 『ACM C++』 PTA 天梯赛练习集L1 | 040-41
		
近期安排 校赛3.23天梯赛3.30华工校赛 4.21省赛 5.12 ------------------------------------------------L1-040----------- ...
 - PTA天梯赛训练题L1-064:估值一亿的AI核心代码(字符串模拟)
		
Update:smz说regex秒过Orz,yzd记在这里了. 听说今年天梯赛有个烦人的模拟,我便被队友逼着试做一下……一发15,二发20.记一记,要不然枉费我写这么久…… 自己还是代码能力太菜了,校 ...
 - PTA 天梯赛  L1
		
L1-002 打印沙漏 细节:就是在 (i>j&&i+j<r+1) 这个区间里才有空格,然后就是 for 循环 for(r=1; ;r+=2) 条件不满足之后还会再 ...
 - 『ACM C++』 PTA 天梯赛练习集L1 | 021-024
		
忙疯警告,这两天可能进度很慢,下午打了一下午训练赛,训练赛的题我就不拿过来的,pta就做了一点点,明天又是满课的一天,所以进度很慢啦~ -------------------------------- ...
 - 『ACM C++』 PTA 天梯赛练习集L1 | 044-45
		
记录今日刷题 ------------------------------------------------L1-044--------------------------------------- ...
 - 团体程序设计天梯赛-练习集L2-011. 玩转二叉树
		
L2-011. 玩转二叉树 时间限制 400 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 陈越 给定一棵二叉树的中序遍历和前序遍历,请你先将树做个镜 ...
 
随机推荐
- Sql Server 2008日志满的解决办法
			
通过sql命令 USE ZGZY; GO --由完整模式设置为简单恢复模式 ALTER DATABASE ZGZY SET RECOVERY SIMPLE WITH NO_WAIT GO --收缩日志 ...
 - LeetCode 178. 分数排名
			
1.题目描述 编写一个 SQL 查询来实现分数排名.如果两个分数相同,则两个分数排名(Rank)相同.请注意,平分后的下一个名次应该是下一个连续的整数值.换句话说,名次之间不应该有“间隔”. +--- ...
 - 利用efi功能更改bios主板被隐藏的设置(如超频)
			
整理自(来源): http://tieba.baidu.com/p/4934345324 ([新手教程]利用EFI启动盘修改 隐藏bios设置) http://tieba.baidu.com/p/49 ...
 - android找不到aar包
			
转载请标明出处,维权必究:https://www.cnblogs.com/tangZH/p/9939663.html 在做项目的时候引入aar包,编译的时候却提示错误(这个错误大概说的是...... ...
 - Netty学习笔记(一) 实现DISCARD服务
			
官方那个给出的介绍是:Netty是由JBOSS提供的一个java开源框架.Netty提供异步的.事件驱动的网络应用程序框架和工具,用以快速开发高性能.高可靠性的网络服务器和客户端程序.然后我们简单理解 ...
 - 南京邮电大学java第三次实验报告
			
实 验 报 告 ( 2017 / 2018学年 第2学期) 课程名称 JAVA语言程序设计 实验名称 Java集成开发环境的安装与使用. Java变量.表达式与控制结构 实验时间 2018 年 4 月 ...
 - DVWA 黑客攻防演练(九) SQL 盲注 SQL Injection (Blind)
			
上一篇文章谈及了 dvwa 中的SQL注入攻击,而这篇和上一篇内容很像,都是关于SQL注入攻击.和上一篇相比,上一篇的注入成功就马上得到所有用户的信息,这部分页面上不会返回一些很明显的信息供你调试,就 ...
 - Git在商业项目中的使用流程
			
一 引言 这一篇文章还是记录我在杭州工作的总结. 我刚来公司的时候,对Git的使用很头痛,因为在学校里面很少用这个东西,即使用,一般也只有一个分支,不会出现代码冲突和代码合并的情况.但是公司里面一个项 ...
 - 基于Git项目管理客户端SourceTree的免注册安装及远程连接方法
			
作为程序员,不可避免的要在github上查询代码,而在企业项目中,为了使得项目好管理需要使用项目管理客户端,所以接下来详细讲解一下基于git的sourceTree在windows系统下的安装及与Git ...
 - Spring MVC 数据绑定 (四)
			
完整的项目案例: springmvc.zip 目录 实例 项目结构路径: 一.配置web.xml <?xml version="1.0" encoding="UTF ...