L2-006. 树的遍历-PAT团体程序设计天梯赛GPLT
给定一棵二叉树的后序遍历和中序遍历,请你输出其层序遍历的序列。这里假设键值都是互不相等的正整数。
输入格式:
输入第一行给出一个正整数N(<=30),是二叉树中结点的个数。第二行给出其后序遍历序列。第三行给出其中序遍历序列。数字间以空格分隔。
输出格式:
在一行中输出该树的层序遍历的序列。数字间以1个空格分隔,行首尾不得有多余空格。
输入样例:
7
2 3 1 5 7 6 4
1 2 3 4 5 6 7
输出样例:
4 1 6 3 5 7 2
分析:与后序中序转换为前序的代码相仿(无须构造二叉树再进行广度优先搜索~),只不过加一个变量index,表示当前的根结点在二叉树中所对应的下标(从0开始),所以进行一次输出先序的递归过程中,就可以把根结点下标index及所对应的值存储在map<int, int> level中,map是有序的会根据index从小到大自动排序,这样递归完成后level中的值就是层序遍历的顺序~~
如果你不知道如何将后序和中序转换为先序,请看-》https://www.liuchuo.net/archives/2090
#include <cstdio>
#include <vector>
using namespace std;
vector<int> post, in, level(100000, -1);
void pre(int root, int start, int end, int index) {if(start > end) return ;int i = start;while(i < end && in[i] != post[root]) i++;level[index] = post[root];pre(root - 1 - end + i, start, i - 1, 2 * index + 1);pre(root - 1, i + 1, end, 2 * index + 2);
}
int main() {int n, cnt = 0;scanf("%d", &n);post.resize(n);in.resize(n);for(int i = 0; i < n; i++) scanf("%d", &post[i]);for(int i = 0; i < n; i++) scanf("%d", &in[i]);pre(n-1, 0, n-1, 0);for(int i = 0; i < level.size(); i++) {if(level[i] != -1 && cnt != n - 1) {printf("%d ", level[i]);cnt++;} else if(level[i] != -1){printf("%d", level[i]);break;}}return 0;
}
L2-006. 树的遍历-PAT团体程序设计天梯赛GPLT相关推荐
- L2-005 集合相似度-PAT团体程序设计天梯赛GPLT
题目来源:团体程序设计天梯赛-练习集 题目地址:L2-005 集合相似度 题目大意 给定 nnn 个集合,然后有 kkk 次询问,每次询问都要求出 Nc/Nt×100%N_c / N_t \times ...
- L2-035 完全二叉树的层序遍历 (25 分)-PAT 团体程序设计天梯赛 GPLT
一个二叉树,如果每一个层的结点数都达到最大值,则这个二叉树就是完美二叉树.对于深度为 D 的,有 N 个结点的二叉树,若其结点对应于相同深度完美二叉树的层序遍历的前 N 个结点,这样的树就是完全二叉树 ...
- L3-002. 堆栈-PAT团体程序设计天梯赛GPLT(树状数组)
大家都知道"堆栈"是一种"先进后出"的线性结构,基本操作有"入栈"(将新元素插入栈顶)和"出栈"(将栈顶元素的值返回并从 ...
- L3-017 森森快递 (30 分)-PAT 团体程序设计天梯赛 GPLT
森森开了一家快递公司,叫森森快递.因为公司刚刚开张,所以业务路线很简单,可以认为是一条直线上的N个城市,这些城市从左到右依次从0到(N−1)编号.由于道路限制,第i号城市(i=0,⋯,N−2)与第(i ...
- L3-010. 是否完全二叉搜索树-PAT团体程序设计天梯赛GPLT
将一系列给定数字顺序插入一个初始为空的二叉搜索树(定义为左子树键值大,右子树键值小),你需要判断最后的树是否一棵完全二叉树,并且给出其层序遍历的结果. 输入格式: 输入第一行给出一个不超过20的正整数 ...
- L2-004. 这是二叉搜索树吗?-PAT团体程序设计天梯赛GPLT
一棵二叉搜索树可被递归地定义为具有下列性质的二叉树:对于任一结点, 其左子树中所有结点的键值小于该结点的键值: 其右子树中所有结点的键值大于等于该结点的键值: 其左右子树都是二叉搜索树. 所谓二叉搜索 ...
- L2-008. 最长对称子串-PAT团体程序设计天梯赛GPLT
对给定的字符串,本题要求你输出最长对称子串的长度.例如,给定"Is PAT&TAP symmetric?",最长对称子串为"s PAT&TAP s&quo ...
- L2-011. 玩转二叉树-PAT团体程序设计天梯赛GPLT
给定一棵二叉树的中序遍历和前序遍历,请你先将树做个镜面反转,再输出反转后的层序遍历的序列.所谓镜面反转,是指将所有非叶结点的左右孩子对换.这里假设键值都是互不相等的正整数. 输入格式: 输入第一行给出 ...
- L3-021 神坛 (30 分)-PAT 团体程序设计天梯赛 GPLT
在古老的迈瑞城,巍然屹立着 n 块神石.长老们商议,选取 3 块神石围成一个神坛.因为神坛的能量强度与它的面积成反比,因此神坛的面积越小越好.特殊地,如果有两块神石坐标相同,或者三块神石共线,神坛的面 ...
最新文章
- 安装Oracle9I出现加载数据库时出错:areasQueries错误,提示停止该组件或所有组件安装,之后安装不能进行...
- 计算机硬件系统的运行速度,电脑运行速度不给力 需要更换哪些硬件?
- centos php7.0 mysql_CentOS 7.3 下 安装LNMP(Nginx1.10+MySQL5.7+PHP7.0.20)
- php如何循环输出图片,[图片 显示] 缩图循环显示(php,mysql,script)-PHP教程,PHP应用
- jdk8读取文件_JDK 7和JDK 8中大行读取速度较慢的原因
- CSS鼠标滑过改变样式颜色
- mac下安装caffe
- sd卡有多个android文件夹,android - 如何adb拉出SD卡中存在的文件夹的所有文件
- 数据科学 IPython 笔记本 9.2 NumPy 简介
- linux mtime参数,linux find mtime参数详解
- js判断null_JavaScript中的undefined和null
- 怎样实现banner自动播放html,纯css实现轮播图banner自动轮换效果
- 解释什么是计算机硬件和软件,什么叫软件,什么叫硬件?(要详细)
- 如何用计算机排版打表格,PPT怎么利用表格来进行排版
- 企业发展滞缓,还不是因为踩了这四个数据大坑!
- 超实用的大学网课答案搜题软件及公众号有哪些?
- rap技术原理_RAP_表观遗传_北京晶莱华科生物技术有限公司
- 大数据处理关键技术主要有五种,具体指的是什么?
- K-Means聚类算法原理及其python和matlab实现
- C++ OpenCV 基于HSV颜色分割区域、获取目标