如何从前序与中序遍历序列构造python二叉树
发表于:2025-01-25 作者:千家信息网编辑
千家信息网最后更新 2025年01月25日,如何从前序与中序遍历序列构造python二叉树,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。【题目】根据一棵树的前序遍历
千家信息网最后更新 2025年01月25日如何从前序与中序遍历序列构造python二叉树
如何从前序与中序遍历序列构造python二叉树,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。
【题目】
根据一棵树的前序遍历与中序遍历构造二叉树。
注意: 你可以假设树中没有重复的元素。
例如,给出
前序遍历 preorder = [3,9,20,15,7]
中序遍历 inorder = [9,3,15,20,7]
返回如下的二叉树:
3
/ \
9 20
/ \
15 7
【思路】
首先回顾遍历的顺序:前序遍历是根节点-左子树-右子树,中序遍历是左子树-根节点-右子树。
那么前序遍历数组的第一个元素肯定是根节点,在中序遍历数组中找到这个元素,则其前一部分是左子树的元素,其后一部分是右子树的元素。递归即可求解。
注意:前序遍历+后序遍历,不能确定唯一的二叉树!
【代码】
python版本
# Definition for a binary tree node.
# class TreeNode(object):
# def __init__(self, x):
# self.val = x
# self.left = None
# self.right = None
class Solution(object):
def buildTree(self, preorder, inorder):
"""
:type preorder: List[int]
:type inorder: List[int]
:rtype: TreeNode
"""
# 前序遍历,第一个是head
# 中序遍历,前一部分是左子树,后一部分是右子树
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
【相似题目】
从中序与后序遍历序列构造二叉树
解题思路:后序遍历数组的最后一个元素是根节点的元素,同样在中序遍历数组中找到该元素,递归生成二叉树。
根据前序和后序遍历构造二叉树
解题思路:直接生成只有右孩子的二叉树即可满足条件。
看完上述内容是否对您有帮助呢?如果还想对相关知识有进一步的了解或阅读更多相关文章,请关注行业资讯频道,感谢您对的支持。
元素
子树
数组
节点
思路
序列
题目
递归
帮助
生成
清楚
相似
从中
代码
内容
只有
孩子
对此
文章
新手
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
软件开发中间件和构件
华讯校招软件开发工程师
什么是是数据库系统软件
软件开发违约赔偿
电网 网络安全 创业
网络技术专升本选什么专业
无锡车辆数据库
做设计师还是软件开发好
服务器上门回收服务
数据库开发技术方法和路线
南京正厚软件开发岗位
网络安全深入解读
高青管理库存软件开发
成都早找网络技术有限公司
夫子庙民宿软件开发
特色软件开发推荐厂家
辽宁软件开发定制费用是多少
关于加强网络安全的措施
网络安全询问提纲
瑞翊网络技术公司
江苏提供网络技术哪家好
网络安全法的基本知识
逍遥问道gm账号数据库
医院管理系统的数据库设计与实现
node中操作数据库的框架
网络安全的目标和关键是什么
蚌埠网络安全公司
复试分数线数据库
GTEx数据库使用教程
数据库查询是否存在某一字段