# class TreeNode:
#     def __init__(self, x):
#         self.val = x
#         self.left = None
#         self.right = None
#
# 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
#
# 
# @param pre int整型一维数组 
# @param vin int整型一维数组 
# @return TreeNode类
#
class Solution:
    def reConstructBinaryTree(self , pre: List[int], vin: List[int]) -> TreeNode:
        # write code here
        if len(pre)==0: 
            return
        root=pre[0]
        rootnode=TreeNode(root)
        index=vin.index(root)
        left_pre=pre[1:index+1]
        right_pre=pre[index+1:]
        left_vin=vin[:index]
        right_vin=vin[index+1:]
        nodeL=self.reConstructBinaryTree(left_pre, left_vin)
        rootnode.left=nodeL
        nodeR=self.reConstructBinaryTree(right_pre, right_vin)
        rootnode.right=nodeR
        return rootnode