关注上方深度学习技术前沿”,选择“星标公众号”

资源干货,第一时间送达!

105. 从前序与中序遍历序列构造二叉树

根据一棵树的前序遍历与中序遍历构造二叉树。

注意:

  • - 你可以假设树中没有重复的元素。

例如,输入:

前序遍历 preorder = [3,9,20,15,7]
中序遍历 inorder = [9,3,15,20,7]
输出:[3,9,20,null,null,15,7]

返回如下的二叉树:

    3/ \9  20/  \15   7

前序遍历是根左右,因此preorder第一个元素一定是整个树的根。由于题目说明了没有重复元素,因此我们可以通过preorder[0]去inorder找到根在inorder中的索引pos。

而由于中序遍历是左根右,我们容易找到pos左边的都是左子树,pos右边都是右子树。

Python实现:

# Definition for a binary tree node.
# class TreeNode:
# def __init__(self, x):
# self.val = x
# self.left = None
# self.right = Noneclass Solution:def buildTree(self, preorder: List[int], inorder: List[int]) -> TreeNode:if len(preorder) == 0:return Noneelif len(preorder) == 1:return TreeNode(preorder[0])else:root = TreeNode(preorder[0])#锁定中序遍历中根节点的位置pos = inorder.index(preorder[0])root.left = self.buildTree(preorder[1:pos+1], inorder[:pos])root.right = self.buildTree(preorder[pos+1:], inorder[pos+1:])return root

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

根据一棵树的中序遍历与后序遍历构造二叉树。

注意:
你可以假设树中没有重复的元素。

例如,给出
中序遍历 inorder = [9,3,15,20,7]
后序遍历 postorder = [9,15,7,20,3]

返回如下的二叉树:

    3/ \9  20/  \15   7

思路和上题类似:

后序遍历是左右根,因此postorder最后一个元素一定是整个树的根。由于题目说明了没有重复元素,因此我们可以通过postorder[-1]去inorder找到根在inorder中的索引pos。

而由于中序遍历是左根右,我们容易找到pos左边的都是左子树,pos右边都是右子树。

Python代码实现:

# Definition for a binary tree node.
# class TreeNode:
# def __init__(self, x):
# self.val = x
# self.left = None
# self.right = Noneclass Solution:def buildTree(self, inorder: List[int], postorder: List[int]) -> TreeNode:if(len(postorder)==0):return Noneelif(len(postorder)==1):return TreeNode(postorder[0])else:root = TreeNode(postorder[-1])pos = inorder.index(postorder[-1])root.left = self.buildTree(inorder[:pos], postorder[:pos])root.right = self.buildTree(inorder[pos+1:], postorder[pos:-1])return root

【LeetCode系列】从中序与后序遍历序列构造二叉树 从前序与中序遍历序列构造二叉树...相关推荐

  1. LeetCode 刷题之旅(2020.05.22)——105. 从前序与中序遍历序列构造二叉树(中)

    LeetCode 刷题之旅(2020.05.22)--105. 从前序与中序遍历序列构造二叉树(中) 题目: 根据一棵树的前序遍历与中序遍历构造二叉树. 注意: 你可以假设树中没有重复的元素. 例如, ...

  2. 二叉树的前序、中序、后序遍历与创建

    #include <iostream> #include <string> #include <stack> using namespace std; struct ...

  3. LeetCode--144,94,145,102 二叉树的前序、中序、后序、层序遍历(递归,迭代,栈,队列)

    二叉树的前序.中序.后序.层序遍历(递归,迭代,栈,队列) 1. 二叉树的前序遍历 1.1 题目描述 1.2 题目分析 1.3 Python实现 2. 二叉树的中序遍历 2.1 题目描述 2.2 题目 ...

  4. 如何判断二叉树的前序,中序,后序遍历

    文章目录 前言 一.如何判断二叉树的前序,中序,后序遍历? 二.已知二叉树的前序遍历和中序遍历,如何得到它的后序遍历? 三.程序实现 总结 前言 最近复习题中看到二叉树,对于它的前序,中序,后序遍历的 ...

  5. 非递归实现二叉树的前序、中序、后序遍历

    目录 非递归实现二叉树的前序遍历 非递归实现二叉树的中序遍历 非递归实现二叉树的后序遍历 根据二叉树的前序和中序遍历结果还原二叉树 根据二叉树的中序和后序遍历结果还原二叉树 非递归遍历需要借助栈. 非 ...

  6. 二叉树的前序、中序、后序遍历(递归、非递归写法)

    文章目录 一.什么是二叉树? 二.二叉树的基本概念 三.二叉树的三种遍历方式 1.前序遍历(preordertraversal) 1.中序遍历(inordertraversal) 1.后序遍历(pos ...

  7. 二叉树的前序、中序、后序遍历以及根据前序和中序或中序和后序生成二叉树

    二叉树的前序.中序.后序遍历:根据前序和中序或中序和后序生成二叉树 给定如下二叉树: 前序遍历结果:1234567 中序遍历结果:3241657 后序遍历结果:3426751 遍历代码实现:思路:将子 ...

  8. 一文彻底搞定二叉树的前序、中序、后序遍历(图解递归非递归)

    前言 大家好,我是bigsai,在数据结构与算法中,二叉树无论是考研.笔试都是非常高频的考点内容,在二叉树中,二叉树的遍历又是非常重要的知识点,今天给大家讲讲二叉树的层序遍历. 这部分很多人可能会但是 ...

  9. C语言利用二叉树的操作实现根据给定的字符串生成二叉树并前序、中序、后序输出二叉树。

    C语言利用二叉树的操作实现根据给定的字符串生成二叉树并前序.中序.后序输出二叉树. Description 根据给定的字符串生成二叉树并前序.中序.后序此二叉树. Input 给定一字符串,其中#表示 ...

  10. java根据前序和中序建树_(Java实现)二叉树---根据前序、中序、后序数组还原二叉树...

    概述在上一篇文章中讲到顺序存储二叉树,一般是用于完全二叉树,通过统一的数学公式可以将数组还原成完全二叉树 而对于普通的二叉树来说,也可以根据前序.中序和后序遍历得到的数组,还原二叉树 还原还原的情况分 ...

最新文章

  1. 技术“摸鱼” 大神,国外小哥 5 年白拿 45 万工资!
  2. Windows 下面的 redis GUI操作工具
  3. 矛与盾:二进制漏洞攻防思想对抗
  4. python 数据分析学什么-入门数据分析,我应该学习什么编程语言
  5. Javascript日期时间总结
  6. 从内核文件系统看文件读写过程
  7. selenium与chromedriver的操作
  8. mysql修改记录_MySQL中如何创建、查看、删除、修改表记录
  9. linux ext4 inode,Ext4文件系统中inode数量的限制
  10. String的常用方法
  11. Smart 200PLC PC Access SMART OPC通信
  12. 在几何画板中如何制作圆柱的侧面展开动画_怎样用ppt做圆柱的侧面展开动画
  13. 2021软考-信息处理员知识点汇总
  14. 【HTB系列】靶机Chaos的渗透测试详解
  15. 水花兄弟又凑齐了(20220111 Week2-1)
  16. 一次和前端的相互甩锅的问题记录
  17. 大型传统企业要不要提升自身的IT研发能力
  18. (2)勾股数组与单位圆
  19. Android 程序员的技术栈大全(1),中高级Android面试题目汇总解答
  20. 去中心化通信简易方案

热门文章

  1. 别把你的目光停留在周围
  2. 网络卖家自曝黑幕 “信用刷手”欺骗你
  3. 食出100分:‘粥’的做法4---鱼片瘦肉粥
  4. 基于(Mixed)Integer Programming方法的服务组合相关论文实验介绍 (1)
  5. yolo-mask的损失函数l包含三部分_损失函数总结-应用和trick
  6. java面向对象示例_JAVA面向对象基础示例
  7. mysql2005备份_创建完整数据库备份 - SQL Server | Microsoft Docs
  8. 查看anaconda所用python安装路径conda info --env
  9. 熵的定义(很好的方法论工具尤其第三熵增益的计算)
  10. 计算机大师高德纳权威著作《计算机程序设计艺术》影印版精装版已经入库,即将上市!