1631. 后序遍历
Powered by:NEFU AB-IN
Link
文章目录
- 1631. 后序遍历
- 题意
- 思路
- 代码
1631. 后序遍历
题意
假设二叉树上各结点的权值互不相同且都为正整数。
给定二叉树的前序遍历和中序遍历,请你输出二叉树的后序遍历的第一个数字。思路
已知前序和中序,求后序
各节点的值不同,故可用哈希表优化代码
/* * @Author: NEFU AB-IN * @Date: 2022-04-19 22:39:04 * @FilePath: \ACM\Acwing\1631.cpp * @LastEditTime: 2022-04-19 22:50:00 */ #include <algorithm> #include <cstring> #include <iostream> #include <unordered_map>using namespace std;const int N = 1e5 + 10; int preorder[N], inorder[N]; int n, post;unordered_map<int, int> pos;void build(int il, int ir, int pl, int pr) {int root = preorder[pl];int k = pos[root];if (il < k)build(il, k - 1, pl + 1, pl + 1 + k - 1 - il);if (ir > k)build(k + 1, ir, pl + 1 + k - 1 - il + 1, pr);if (!post)post = root; }int main() {cin >> n;for (int i = 0; i < n; ++i){cin >> preorder[i];}for (int i = 0; i < n; ++i){cin >> inorder[i];pos[inorder[i]] = i;}build(0, n - 1, 0, n - 1);cout << post; }
1631. 后序遍历相关推荐
- 【剑指Offer】23、二叉搜索树的后序遍历序列
题目描述: 输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果.如果是则输出Yes,否则输出No.假设输入的数组的任意两个数字都互不相同. 解题思路: 对于后续遍历序列,序 ...
- 【C++】二叉树的先序、中序、后序遍历序列
二叉树常用到的遍历有这三种 先序遍历:先遍历根节点,然后再分别遍历左节点和右节点.(根左右) 中序遍历:先遍历左节点,然后再遍历根节点,最后遍历右节点.(左根右) 后序遍历:先遍历左节点,然后再遍历右 ...
- 剑指offer:面试题33. 二叉搜索树的后序遍历序列
题目:二叉搜索树的后序遍历序列 输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历结果.如果是则返回 true,否则返回 false.假设输入的数组的任意两个数字都互不相同. 参考以下这颗二叉搜 ...
- 二叉树(C++):创建,前中后序遍历(递归+非递归),获取叶子节点个数,获取树的高度
文章目录 前言 创建二叉树 先序遍历 中序遍历 后序遍历 获取叶子节点个数 获取树的高度 测试代码 前言 现有如下二叉树: 关于二叉树的相关操作,我们能够发现二叉树从根节点到子节点,以及每个中间节点基 ...
- python数据结构与算法:二叉树及三种遍历方式(先序遍历/中序遍历/后序遍历)
树的实现采用queue的形式: 树的三种遍历方式(广度优先白能力法):先序遍历(根左右),中序遍历(左根右)以及后序遍历(左右根) ######################P6.4 数据结构### ...
- 二叉树--先序中序遍历求后序遍历
先序遍历:根 左 右 中序遍历:左 根 右 后序遍历:左 右 根 我们可以先从先序遍历中找到根节点,由于知道了根节点那么可以依靠中序遍历找到左子树,右子树.这样再去先序遍历中找到左子树的根节点,然后再 ...
- [剑指offer] 二叉搜索树的后序遍历序列
二叉搜索树的后序遍历序列 P157 题目:输入一个数组,判断这个数组是不是一个二叉搜索树的后序遍历的结果. solution:我们知道后序遍历序列的最后一个item是根节点,如果确实是二叉搜索树的后序 ...
- 刻意练习:LeetCode实战 -- 二叉树的后序遍历
背景 今天,第二期基础算法(Leetcode)刻意练习训练营 的打卡任务是二叉树的中序遍历,由于二叉树的遍历方式通常来说有四种:前序遍历.中序遍历.后序遍历以及层次遍历,而LeetCode也有二叉树的 ...
- 二叉树的前序、中序、后序遍历非递归实现
这是leetcode上的3个题目,要求用非递归实现,其中以后序遍历实现最难,既然递归实现的三种遍历程序只需要改变输入代码顺序,为什么循环不可以呢,带着这种执拗的想法,我开始了这次研究 我依然是将递归用 ...
最新文章
- linux as 4 内核版本,Linux Redhat AS 4中编译内核与以往版本的区别(转载)
- [论文笔记] Anatomy of a crowdsourcing platform - Using the example of microworkers.com (IMIS, 2011)...
- 计算机网断IP修改,修改计算机名、IP
- HTML与CSS基础之子和后代元素选择器(八)
- 北京Dotnet分享会 || 精英论坛第三期
- ajax如何传超长字符串_解决ajax超长字符串、中文乱码问题
- [html] 写一个滚动吸顶的布局
- matlab圆柱饶流,有限元法解二维圆柱绕流问题.pdf
- 阿里云:Table Store(OTS) Writer
- 2021中国大学生程序设计竞赛部分题解(CCPC)- 网络选拔赛(重赛)
- 【渝粤教育】国家开放大学2018年春季 0551-21T素描(二) 参考试题
- NPOI导出 The maximum column width for an individual cell is 255 characters
- 关于搭建Hybrid App所需要的基础技术一文
- 【网址收藏】golang持久层框架GORM 中文文档地址
- VC编程来操纵Office
- st计算机编程语言,初学ST语言,有了这篇ST编程语言的相关知识就容易多了~
- wps图表横纵坐标怎么设置_wps怎么切换横纵坐标/excel图表怎么切换横纵坐标
- linux x86软件改arm,x86程序移植到arm上
- 华氏温度转换为摄氏温度,c语言实例一
- 访谈完100个年入百万的自媒体人后,我总结了出了他们的共性