数组反向遍历ios_LeetCode106.从中序与后序遍历序列构造二叉树(Construct Binary Tree from Inor...)...
106. 从中序与后序遍历序列构造二叉树
根据一棵树的中序遍历与后序遍历构造二叉树。
注意: 你可以假设树中没有重复的元素。
例如,给出
中序遍历 inorder = [9,3,15,20,7]后序遍历 postorder = [9,15,7,20,3]返回如下的二叉树: 3 / \ 9 20 / \ 15 7
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/construct-binary-tree-from-inorder-and-postorder-traversal/
Link:https://leetcode.com/problems/construct-binary-tree-from-inorder-and-postorder-traversal/
递归
基本的思路是用postorder最后一个作为跟节点,然后根据inorder值的位置,来确定左子树+右子树
普通递归
class Solution: def buildTree(self, inorder: List[int], postorder: List[int]) -> TreeNode: if len(inorder) == 0 or len(postorder) == 0: return None val = postorder.pop() root = TreeNode(val) i = inorder.index(val) root.right = self.buildTree(inorder[i + 1:], postorder) root.left = self.buildTree(inorder[:i], postorder) return root
优化递归
⚠️注意,由于没有重复元素
1.先用字典做一个反向索引,加速查找index的速度2.使用下标,而不是新建一个数组
def buildTree(self, inorder: List[int], postorder: List[int]) -> TreeNode: self.map_inorder = {} for i in range(len(inorder)): self.map_inorder[inorder[i]] = i return self.helper(inorder, postorder, 0, len(inorder) - 1) def helper(self, inorder: List[int], postorder: List[int], low: int, high: int) -> TreeNode: if low > high: return None val = postorder.pop() root = TreeNode(val) i = self.map_inorder[val] root.right = self.helper(inorder, postorder, i + 1, high) root.left = self.helper(inorder, postorder, low, i - 1) return root
空间优化递归
先创建右子树部分,然后在做左边
class Solution: def buildTree(self, inorder: List[int], postorder: List[int]) -> TreeNode: return self.helper(inorder, postorder, None) def helper(self, inorder: List[int], postorder: List[int], stop: TreeNode) -> TreeNode: if len(inorder) == 0 or inorder[-1] == stop: return None val = postorder.pop() root = TreeNode(val) root.right = self.helper(inorder, postorder, val) inorder.pop() root.left = self.helper(inorder, postorder, stop) return root
--End--
数组反向遍历ios_LeetCode106.从中序与后序遍历序列构造二叉树(Construct Binary Tree from Inor...)...相关推荐
- [Leetcode][第106题][JAVA][ 从中序与后序遍历序列构造二叉树][分治][递归]
[问题描述][中等] [解答思路] public class Solution {public TreeNode buildTree(int[] inorder, int[] postorder) { ...
- 016.从中序与后序遍历序列构造二叉树
题目链接: 106. 从中序与后序遍历序列构造二叉树 大概思路: 题目要求: 给定两个整数数组 inorder 和 postorder ,其中 inorder 是二叉树的中序遍历, postorder ...
- Suzy找到实习了吗Day 18 | 二叉树进行中:513 找树左下角的值,112 路径总和 ,106.从中序与后序遍历序列构造二叉树
513 找树左下角的值 solution # Definition for a binary tree node. # class TreeNode: # def __init__(self, val ...
- 【必拿下系列】106. 从中序与后序遍历序列构造二叉树105从前序与中序遍历序列构造二叉树
两题各自的链接放这里了: 链接: 106 链接: 105 106.从中序与后序遍历序列构造二叉树 如果你是不知道理论的,那就得仔细分析了, 举个例子: 输入:inorder = [9,3,15,20, ...
- 代码随想录第18天|找树左下角的值,路径总和,从中序和后序遍历序列构造二叉树
LeetCode513.找树左下角的值 题目链接:513. 找树左下角的值 - 力扣(LeetCode) 思路: 迭代法(只需要记录最后一行第一个节点的数值就可以了.): /*** Definitio ...
- 【算法】有序链表转换二叉搜索树和从中序与后序遍历序列构造二叉树Java解答参考
三道算法题 1.有序链表转换二叉搜索树 Java代码参考 2.从中序与后序遍历序列构造二叉树 Java代码参考 3.移除元素 Java代码参考 1.有序链表转换二叉搜索树 给定一个单链表,其中的元素按 ...
- 把一个数组的值存入二叉树中,然后利用前序、中序、后序3种方式进行遍历(完整代码以及运行结果)(Java)
把一个数组的值存入二叉树中,然后利用前序.中序.后序3种方式进行遍历(完整代码以及运行结果) 在最近的面试过程中,听说有小伙伴被面试官要求创建二叉树,然后对该二叉树进行遍历,感觉这一直以来都是一个大家 ...
- 【LeetCode系列】从中序与后序遍历序列构造二叉树 从前序与中序遍历序列构造二叉树...
关注上方"深度学习技术前沿",选择"星标公众号", 资源干货,第一时间送达! 105. 从前序与中序遍历序列构造二叉树 根据一棵树的前序遍历与中序遍历构造二叉树 ...
- leetcode 106. 从中序与后序遍历序列构造二叉树 c语言递归解法
如题: 根据一棵树的中序遍历与后序遍历构造二叉树. 注意: 你可以假设树中没有重复的元素.例如,给出 中序遍历 inorder = [9,3,15,20,7] 后序遍历 postorder = [9, ...
最新文章
- SVM支持向量机(上)
- php文件上传错误代码
- Mybatis的生命周期及作用域
- SPSS教程及常用操作参考表 —— 一篇文章解决对SPSS的所有疑问
- c语言常见头文件大全,C语言头文件大全(free)
- 6,美国2012年总统候选人政治献金数据分析
- docker更改映射端口(实践篇)
- centos访问window共享目录
- 【智能硬件】Jetson nana 扩展显存(内存)
- 创维智能电视(SKYWORTH)如何开启U盘安装(酷开系统)
- PMP备考错题集-模拟题一
- mysql查询本用户的表的列名等信息_mysql常用命令查询手册
- 【JS】307- 复习 Object.assign 原理及其实现
- 小红帽linux各功能中英,小红帽「中英文对照」
- ABBYY FineReader如何创建用户语言
- 一个Linux下的网络模拟工具 Core
- 从零开始安装Fate
- 图纸文档管理系统让设计变得更简单、规范
- MySQL Explain详解,explain查询结果每列含义详细解释
- php eds,​能谱仪EDS
热门文章
- 美团_cc城市自定义
- 最土团购系统数据结构数据字典二次开发宝典
- Uploadify_THINKPHP配置说明
- redis主从复制实验,使用ruby
- 程序设计基本概念(3)(sizeof)-2.20 2.23
- 制造业采购审批流程设计示例
- 车辆行人检测数据集_开源 | 相机和激光雷达融合的行人车辆检测跟踪
- java 抽象工厂工厂_Java设计模式之简单工厂、工厂方法和抽象工厂
- webpack版本查看_浅谈webpack技术
- 小眼睛适合大框还是小框眼镜_北京潘家园眼镜城良心商家推荐