给定一棵二叉树的后序遍历和中序遍历,请你输出其层序遍历的序列。这里假设键值都是互不相等的正整数。

输入格式:

输入第一行给出一个正整数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相关推荐

  1. L2-005 集合相似度-PAT团体程序设计天梯赛GPLT

    题目来源:团体程序设计天梯赛-练习集 题目地址:L2-005 集合相似度 题目大意 给定 nnn 个集合,然后有 kkk 次询问,每次询问都要求出 Nc/Nt×100%N_c / N_t \times ...

  2. L2-035 完全二叉树的层序遍历 (25 分)-PAT 团体程序设计天梯赛 GPLT

    一个二叉树,如果每一个层的结点数都达到最大值,则这个二叉树就是完美二叉树.对于深度为 D 的,有 N 个结点的二叉树,若其结点对应于相同深度完美二叉树的层序遍历的前 N 个结点,这样的树就是完全二叉树 ...

  3. L3-002. 堆栈-PAT团体程序设计天梯赛GPLT(树状数组)

    大家都知道"堆栈"是一种"先进后出"的线性结构,基本操作有"入栈"(将新元素插入栈顶)和"出栈"(将栈顶元素的值返回并从 ...

  4. L3-017 森森快递 (30 分)-PAT 团体程序设计天梯赛 GPLT

    森森开了一家快递公司,叫森森快递.因为公司刚刚开张,所以业务路线很简单,可以认为是一条直线上的N个城市,这些城市从左到右依次从0到(N−1)编号.由于道路限制,第i号城市(i=0,⋯,N−2)与第(i ...

  5. L3-010. 是否完全二叉搜索树-PAT团体程序设计天梯赛GPLT

    将一系列给定数字顺序插入一个初始为空的二叉搜索树(定义为左子树键值大,右子树键值小),你需要判断最后的树是否一棵完全二叉树,并且给出其层序遍历的结果. 输入格式: 输入第一行给出一个不超过20的正整数 ...

  6. L2-004. 这是二叉搜索树吗?-PAT团体程序设计天梯赛GPLT

    一棵二叉搜索树可被递归地定义为具有下列性质的二叉树:对于任一结点, 其左子树中所有结点的键值小于该结点的键值: 其右子树中所有结点的键值大于等于该结点的键值: 其左右子树都是二叉搜索树. 所谓二叉搜索 ...

  7. L2-008. 最长对称子串-PAT团体程序设计天梯赛GPLT

    对给定的字符串,本题要求你输出最长对称子串的长度.例如,给定"Is PAT&TAP symmetric?",最长对称子串为"s PAT&TAP s&quo ...

  8. L2-011. 玩转二叉树-PAT团体程序设计天梯赛GPLT

    给定一棵二叉树的中序遍历和前序遍历,请你先将树做个镜面反转,再输出反转后的层序遍历的序列.所谓镜面反转,是指将所有非叶结点的左右孩子对换.这里假设键值都是互不相等的正整数. 输入格式: 输入第一行给出 ...

  9. L3-021 神坛 (30 分)-PAT 团体程序设计天梯赛 GPLT

    在古老的迈瑞城,巍然屹立着 n 块神石.长老们商议,选取 3 块神石围成一个神坛.因为神坛的能量强度与它的面积成反比,因此神坛的面积越小越好.特殊地,如果有两块神石坐标相同,或者三块神石共线,神坛的面 ...

最新文章

  1. 安装Oracle9I出现加载数据库时出错:areasQueries错误,提示停止该组件或所有组件安装,之后安装不能进行...
  2. 计算机硬件系统的运行速度,电脑运行速度不给力 需要更换哪些硬件?
  3. centos php7.0 mysql_CentOS 7.3 下 安装LNMP(Nginx1.10+MySQL5.7+PHP7.0.20)
  4. php如何循环输出图片,[图片 显示] 缩图循环显示(php,mysql,script)-PHP教程,PHP应用
  5. jdk8读取文件_JDK 7和JDK 8中大行读取速度较慢的原因
  6. CSS鼠标滑过改变样式颜色
  7. mac下安装caffe
  8. sd卡有多个android文件夹,android - 如何adb拉出SD卡中存在的文件夹的所有文件
  9. 数据科学 IPython 笔记本 9.2 NumPy 简介
  10. linux mtime参数,linux find mtime参数详解
  11. js判断null_JavaScript中的undefined和null
  12. 怎样实现banner自动播放html,纯css实现轮播图banner自动轮换效果
  13. 解释什么是计算机硬件和软件,什么叫软件,什么叫硬件?(要详细)
  14. 如何用计算机排版打表格,PPT怎么利用表格来进行排版
  15. 企业发展滞缓,还不是因为踩了这四个数据大坑!
  16. 超实用的大学网课答案搜题软件及公众号有哪些?
  17. rap技术原理_RAP_表观遗传_北京晶莱华科生物技术有限公司
  18. 大数据处理关键技术主要有五种,具体指的是什么?
  19. K-Means聚类算法原理及其python和matlab实现
  20. C++ OpenCV 基于HSV颜色分割区域、获取目标

热门文章

  1. OnTouchListener和OnCliskListener
  2. 【运维安全】-MySQL手工注入
  3. WordPress 5.0禁用古滕堡编辑器的方法
  4. 解决Ubuntu 16.04 SSH无法远程登录问题(使用root登录)
  5. Webpack入门教程十四
  6. 路径找不到时该怎么解决
  7. JAVA Metrics 度量工具使用介绍
  8. UIView - CAGradientLayer
  9. ORACLE批量更新四种方法比较
  10. 汉字的动态编码与显示方案