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
"""
# 判断是否有孩子
if not preorder:
return None
# 拿到根节点
root_val = preorder[0]
# 创建节点
root = TreeNode(root_val)
# 拿到根节点在中序遍历中的位置,以确定左右子树个数
root_idx = inorder.index(root_val)
# 分割左右子树,进行递归操作
l = self.buildTree(preorder[1:root_idx+1], inorder[0:root_idx])
r = self.buildTree(preorder[root_idx+1:], inorder[root_idx+1:])
# 将得到的左右子树添加到根节点的左右节点
root.left = l
root.right = r
# 返回根节点
return root
已知前中遍历,重建二叉树,Python
最新推荐文章于 2024-07-10 19:27:42 发布