打卡群刷题总结0810——从前序与中序遍历序列构造二叉树
时间:2022-07-23
本文章向大家介绍打卡群刷题总结0810——从前序与中序遍历序列构造二叉树,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
题目:105. 从前序与中序遍历序列构造二叉树
链接:https://leetcode-cn.com/problems/construct-binary-tree-from-preorder-and-inorder-traversal
根据一棵树的前序遍历与中序遍历构造二叉树。 注意: 你可以假设树中没有重复的元素。 例如,给出 前序遍历 preorder = [3,9,20,15,7] 中序遍历 inorder = [9,3,15,20,7] 返回如下的二叉树: 3 / 9 20 / 15 7
解题:
1、前序遍历:根左右;中序遍历:左根右。所以,前序遍历能够确定根节点元素,中序遍历能够确定左子树、右子树的元素。
扩展:二叉树的构造方法,除了由层次遍历,还可以有前序+中序,或者中序+后序。注意:前序+后序,不能构造唯一的二叉树。
代码:
# 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, preorder, inorder):
"""
:type preorder: List[int]
:type inorder: List[int]
:rtype: TreeNode
"""
if len(preorder) == 0:
return None
node = TreeNode(preorder[0])
index = inorder.index(preorder[0])
node.left = self.buildTree(preorder[1: index + 1], inorder[:index])
node.right = self.buildTree(preorder[index + 1:], inorder[index + 1:])
return node
- ASM 翻译系列第十七弹:ASM Internal ASM Disk Directory
- Windows 7下获取System权限
- ASM 翻译系列第十八弹:ASM Internal ASM file number 5
- 菜单式Shell运维脚本调试小记
- 优化Postgres-x2 GTM
- 启用某些Linux发行版的root帐号
- Linux中的完美截图工具:Deepin-ScreenShot
- ASM 翻译系列第二十弹:ASM Internal ASM file number 7
- Linux:awk命令详解
- 给已安装的Linux新增Swap交换分区
- ASM 翻译系列第二十一弹:ASM Attributes Directory
- Linux:sed命令详解
- ASM 翻译系列第二十二弹:ASM Internal ASM file number 8
- Ghost安装Win7/XP后自动恢复IP的批处理
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- Js常见点击跳转方式
- Js获取域名地址并截取
- 引用lib-flexible导致第三方Ui库缩小
- Spring 定时任务框架详解(1)——快速入门
- Css实现圆形动态波浪
- Css实现一行或多行溢出显示省略号
- Spring 定时任务框架详解(3)——源码分析
- html2cavas实现生成图片
- ElasticSearch学习笔记(1)——简介
- ElasticSearch学习笔记(2)——插件安装和集群搭建
- Echartsjs图表的使用
- ElasticSearch学习笔记(3)——基础概念
- jQueryWEUI解决input框调起的软键盘和选择器重叠的问题
- (31)字符处理命令
- Js用forEach语法循环列表