2
def constructFromPrePost(3
self, preorder: List[int], postorder: List[int]4
) -> Optional[TreeNode]:6
def build(preorder, preStart, preEnd, postorder, postStart, postEnd):9
elif preStart == preEnd:10
return TreeNode(preorder[preStart])12
rootVal = preorder[preStart]13
leftRootVal = preorder[preStart + 1]14
index = valToIndex[leftRootVal]15
root = TreeNode(rootVal)16
leftSize = index - postStart + 119
preorder, preStart + 1, preStart + leftSize, postorder, postStart, index23
preStart + leftSize + 1,33
for i in range(len(postorder)):34
valToIndex[postorder[i]] = i36
return build(preorder, 0, len(preorder) - 1, postorder, 0, len(postorder) - 1)