重建二叉树(已知前序+中序)


# Definition for a binary tree node.
# class TreeNode:
#     def __init__(self, x):
#         self.val = x
#         self.left = None
#         self.right = None

class Solution:
    def buildTree(self, preorder: List[int], inorder: List[int]) -> TreeNode:
        if not preorder or not inorder:
            return None
        root = TreeNode(preorder[0])
        index = inorder.index(root.val)
        left_node = self.buildTree(preorder[1:index+1], inorder[:index]) 
        right_node = self.buildTree(preorder[index+1:], inorder[index+1:])
        root.left = left_node
        root.right = right_node
        return root
原文地址:https://www.cnblogs.com/KbMan/p/14498525.html