如何从前序与中序遍历序列构造python二叉树
发表于:2026-11-02 作者:千家信息网编辑
千家信息网最后更新 2026年11月02日,如何从前序与中序遍历序列构造python二叉树,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。【题目】根据一棵树的前序遍历
千家信息网最后更新 2026年11月02日如何从前序与中序遍历序列构造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安全错误
数据库的锁怎样保障安全
中国互联网科技工作委员会毛军
美国互联网保险保险科技
工业互联网科技新基建
腾讯阿里互联网科技
互联网 科技公司
中国 科技 互联网
西安互联网科技
中国互联网科技发展
凡科互联网科技
南京欣网互联网科技
互联网科技上市公司
广州凡科互联网科技
互联网科技大会
互联网和高科技公司
佛山市翊博互联网络科技有限公司
怎样加入科技互联网
山东星卡互联网科技有限公司官网
皮皮虾互联网科技有限公司
中天科技中国工业互联网
安徽零酒互联网科技有限公司
互联网与科技发展
互联网科技的英文
互联网女皇 腾讯科技
伴你行互联网科技有限公司
互联网科技的未来发展
深圳市运趣互联网科技有限公司
科技互联网的估值
广州百诚互联网科技有限公司官网
江苏互联网科技小贷
互联网科技大会大佬