如何根据前序和前序遍历序列构造python二叉树,很多新手都不是很清楚。为了帮助大家解决这个问题,下面小编就为大家详细讲解一下。需要的人可以从中学习,希望你能有所收获。
【标题】
根据树的前序遍历和前序遍历构造二叉树。
注意:您可以假设树中没有重复的元素。
例如,给定
前序遍历前序=[3,9,20,15,7]
有序遍历顺序=[9,3,15,20,7]
返回以下二叉树:
三
/\
920
/\
157
[思考]
首先回顾一下遍历顺序:先行遍历是根节点-左子树-右子树,中间遍历是左子树-根节点-右子树。
那么前序遍历数组的第一个元素必须是根节点。如果在预序遍历数组中找到这个元素,那么它的前一部分是左子树的元素,后一部分是右子树的元素。可以递归求解。
注意:不能通过遍历前序和后序来确定唯一二叉树!
[代码]
python版本
# Definitionforabinarytreenode。
#classTreeNode(对象):
#def__init__(self,x):
#self.val=x
# self.left=无
#自我正确=无
类别解决方案(对象):
defbuildTree(自订、预订、订单):
'''
:类型预订:列表[int]
:类型编辑器:列表[int]
:rtype:TreeNode重新编码
'''
#前言遍历,第一个是头
#中序遍历,前一部分是左子树,后一部分是右子树。
iflen(preorder)=0:
返回无
node=TreeNode(preorder[0])
index=inoder . index(preorder[0])
node . left=self . BuildTree(preorder[1: index 1],inoder[: index])
node . right=self . build tree(preorder[index 1:],inoder[index 1:])
return node[类似主题]
通过遍历中序和后序序列构造二叉树
解决方法:序数遍历数组的最后一个元素是根节点的元素,这个元素也在序数遍历数组中找到,递归生成二叉树。
根据前后序遍历构造二叉树。
解决方法:直接生成只有合适子树的二叉树就可以满足条件。
阅读以上内容对你有帮助吗?如果您想了解更多相关知识或阅读更多相关文章,请关注行业资讯频道,感谢您的支持。
内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/144278.html