给定两个整数数组 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解法相关推荐

  1. 从前序与中序遍历序列构造二叉树Python解法

    给定两个整数数组 preorder 和 inorder ,其中 preorder 是二叉树的先序遍历, inorder 是同一棵树的中序遍历,请构造二叉树并返回其根节点. 来源:力扣(LeetCode ...

  2. 【LeetCode系列】从中序与后序遍历序列构造二叉树 从前序与中序遍历序列构造二叉树...

    关注上方"深度学习技术前沿",选择"星标公众号", 资源干货,第一时间送达! 105. 从前序与中序遍历序列构造二叉树 根据一棵树的前序遍历与中序遍历构造二叉树 ...

  3. 数组反向遍历ios_LeetCode106.从中序与后序遍历序列构造二叉树(Construct Binary Tree from Inor...)...

    106. 从中序与后序遍历序列构造二叉树 根据一棵树的中序遍历与后序遍历构造二叉树. 注意: 你可以假设树中没有重复的元素. 例如,给出 中序遍历 inorder = [9,3,15,20,7]后序遍 ...

  4. leetcode 106. 从中序与后序遍历序列构造二叉树 c语言递归解法

    如题: 根据一棵树的中序遍历与后序遍历构造二叉树. 注意: 你可以假设树中没有重复的元素.例如,给出 中序遍历 inorder = [9,3,15,20,7] 后序遍历 postorder = [9, ...

  5. 105从前序与中序遍历序列构造二叉树 106 从中序与后序遍历序列构造二叉树 (递归 + 哈希)

    引言 这两道题主要是考察二叉树遍历的掌握,即由前序和中序推出原二叉树,由后序和中序推出原二叉树,这里先来说一下推导过程: 前序和中序 知道前序遍历和中序遍历,如何推原二叉树?(直接是结论,可以自行推导 ...

  6. [Leetcode][第106题][JAVA][ 从中序与后序遍历序列构造二叉树][分治][递归]

    [问题描述][中等] [解答思路] public class Solution {public TreeNode buildTree(int[] inorder, int[] postorder) { ...

  7. [leetcode]从中序与后序/前序遍历序列构造二叉树

    从中序与后序遍历序列构造二叉树 根据一棵树的中序遍历与后序遍历构造二叉树. 注意: 你可以假设树中没有重复的元素. 例如,给出 中序遍历 inorder = [9,3,15,20,7] 后序遍历 po ...

  8. 016.从中序与后序遍历序列构造二叉树

    题目链接: 106. 从中序与后序遍历序列构造二叉树 大概思路: 题目要求: 给定两个整数数组 inorder 和 postorder ,其中 inorder 是二叉树的中序遍历, postorder ...

  9. Suzy找到实习了吗Day 18 | 二叉树进行中:513 找树左下角的值,112 路径总和 ,106.从中序与后序遍历序列构造二叉树

    513 找树左下角的值 solution # Definition for a binary tree node. # class TreeNode: # def __init__(self, val ...

最新文章

  1. 突然想自己做个平衡车了
  2. jq 创建与添加节点
  3. C#设计模式系列:访问者模式(Visitor)
  4. C#线程系列讲座(3):线程池和文件下载服务器
  5. 【多线程】C++11进行多线程开发 (std::thread)
  6. ubuntu查看node的安装目录_ubuntu安装nfs服务实现共享目录
  7. 文件查找-locate find 学习笔记
  8. 微擎乐慧云智慧农场源码V1.0.1
  9. node.js 程序_如何不使用外部程序包创建Node.js Web应用程序
  10. Baum-WELCH和vertibe解码算法
  11. 计算机网络基础+重点知识点
  12. myeclipse6.5集成freemaker
  13. L2-010 排座位 (并查集)
  14. python linspace函数_等差数列与linspace函数
  15. 面试官:聊聊二维码扫码登录的原理
  16. Java——因式分解算法
  17. Spring Boot实践 | 利用Spring Security快速搞定权限控制
  18. CUDA 学习(CUDA实战 第四章)
  19. 【渝粤题库】广东开放大学 互联网金融本 形成性考核
  20. 云数据库 GaussDB(for Influx) 解密第十一期:让智能电网中时序数据处理更高效

热门文章

  1. 关于 Node.js scoped module 的一些理解
  2. 介绍一个能将任意关键字高亮实现的 Visual Studio Code 扩展
  3. SAP Spartacus B2B 页面信息提示图标的弹出窗口显示实现逻辑
  4. 手术期间重读《倚天屠龙记》
  5. Angular应用的angular.json文件字段一览
  6. JSP的生命周期研究
  7. Create new SAP DDL view and click finish in wizard
  8. 如何将SAP UI5应用配置到SAP云平台Fiori Launchpad里
  9. 如何部署Docker镜像到SAP Cloud Platform
  10. SAP GUI和Windows注册表