从中序与后序遍历序列构造二叉树Python解法
给定两个整数数组 inorder 和 postorder ,其中 inorder 是二叉树的中序遍历, postorder 是同一棵树的后序遍历,请你构造并返回这颗 二叉树 。
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/construct-binary-tree-from-inorder-and-postorder-traversal
例:
输入:inorder = [9,3,15,20,7], postorder = [9,15,7,20,3]
输出:[3,9,20,null,null,15,7]
解析:
后序遍历的最后一个值即为根节点,在中序遍历中找到该值,在中序遍历中,该值得左边为左子树,右边为右子树,每次遍历可以确定一个值,即根节点。
# Definition for a binary tree node.
# class TreeNode(object):
# def __init__(self, val=0, left=None, right=None):
# self.val = val
# self.left = left
# self.right = right
class Solution(object):def buildTree(self, inorder, postorder):""":type inorder: List[int]:type postorder: List[int]:rtype: TreeNode"""def build(pos_left, pos_right, mid_left, mid_right):if pos_left > pos_right or mid_left > mid_right: # 停止条件 return Noneroot = TreeNode(postorder[pos_right]) # 构建节点mid_root = mid_leftwhile mid_root <= mid_right and inorder[mid_root] != postorder[pos_right]: #找寻根节点mid_root += 1diff = mid_root - mid_left # 左子树的长度root.left = build(pos_left, pos_left + diff -1, mid_left, mid_root - 1) # 构建左子树root.right = build(pos_left + diff, pos_right - 1, mid_root + 1, mid_right) # 构建右子树return root # 返回构建好的树return build(0, len(postorder) - 1, 0, len(inorder) - 1)
从中序与后序遍历序列构造二叉树Python解法相关推荐
- 从前序与中序遍历序列构造二叉树Python解法
给定两个整数数组 preorder 和 inorder ,其中 preorder 是二叉树的先序遍历, inorder 是同一棵树的中序遍历,请构造二叉树并返回其根节点. 来源:力扣(LeetCode ...
- 【LeetCode系列】从中序与后序遍历序列构造二叉树 从前序与中序遍历序列构造二叉树...
关注上方"深度学习技术前沿",选择"星标公众号", 资源干货,第一时间送达! 105. 从前序与中序遍历序列构造二叉树 根据一棵树的前序遍历与中序遍历构造二叉树 ...
- 数组反向遍历ios_LeetCode106.从中序与后序遍历序列构造二叉树(Construct Binary Tree from Inor...)...
106. 从中序与后序遍历序列构造二叉树 根据一棵树的中序遍历与后序遍历构造二叉树. 注意: 你可以假设树中没有重复的元素. 例如,给出 中序遍历 inorder = [9,3,15,20,7]后序遍 ...
- leetcode 106. 从中序与后序遍历序列构造二叉树 c语言递归解法
如题: 根据一棵树的中序遍历与后序遍历构造二叉树. 注意: 你可以假设树中没有重复的元素.例如,给出 中序遍历 inorder = [9,3,15,20,7] 后序遍历 postorder = [9, ...
- 105从前序与中序遍历序列构造二叉树 106 从中序与后序遍历序列构造二叉树 (递归 + 哈希)
引言 这两道题主要是考察二叉树遍历的掌握,即由前序和中序推出原二叉树,由后序和中序推出原二叉树,这里先来说一下推导过程: 前序和中序 知道前序遍历和中序遍历,如何推原二叉树?(直接是结论,可以自行推导 ...
- [Leetcode][第106题][JAVA][ 从中序与后序遍历序列构造二叉树][分治][递归]
[问题描述][中等] [解答思路] public class Solution {public TreeNode buildTree(int[] inorder, int[] postorder) { ...
- [leetcode]从中序与后序/前序遍历序列构造二叉树
从中序与后序遍历序列构造二叉树 根据一棵树的中序遍历与后序遍历构造二叉树. 注意: 你可以假设树中没有重复的元素. 例如,给出 中序遍历 inorder = [9,3,15,20,7] 后序遍历 po ...
- 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 ...
最新文章
- 突然想自己做个平衡车了
- jq 创建与添加节点
- C#设计模式系列:访问者模式(Visitor)
- C#线程系列讲座(3):线程池和文件下载服务器
- 【多线程】C++11进行多线程开发 (std::thread)
- ubuntu查看node的安装目录_ubuntu安装nfs服务实现共享目录
- 文件查找-locate find 学习笔记
- 微擎乐慧云智慧农场源码V1.0.1
- node.js 程序_如何不使用外部程序包创建Node.js Web应用程序
- Baum-WELCH和vertibe解码算法
- 计算机网络基础+重点知识点
- myeclipse6.5集成freemaker
- L2-010 排座位 (并查集)
- python linspace函数_等差数列与linspace函数
- 面试官:聊聊二维码扫码登录的原理
- Java——因式分解算法
- Spring Boot实践 | 利用Spring Security快速搞定权限控制
- CUDA 学习(CUDA实战 第四章)
- 【渝粤题库】广东开放大学 互联网金融本 形成性考核
- 云数据库 GaussDB(for Influx) 解密第十一期:让智能电网中时序数据处理更高效
热门文章
- 关于 Node.js scoped module 的一些理解
- 介绍一个能将任意关键字高亮实现的 Visual Studio Code 扩展
- SAP Spartacus B2B 页面信息提示图标的弹出窗口显示实现逻辑
- 手术期间重读《倚天屠龙记》
- Angular应用的angular.json文件字段一览
- JSP的生命周期研究
- Create new SAP DDL view and click finish in wizard
- 如何将SAP UI5应用配置到SAP云平台Fiori Launchpad里
- 如何部署Docker镜像到SAP Cloud Platform
- SAP GUI和Windows注册表