和#105 一个解法:
# 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, inorder: List[int], postorder: List[int]) -> TreeNode:
if not postorder:return None
dic = {element : i for i,element in enumerate(inorder)}
def my_build(left, right):
if(left < right):
top = postorder.pop()
root = TreeNode(top)
index = dic[root.val]
root.right = my_build(index + 1, right)
root.left = my_build(left, index)
return root
return my_build(0, len(inorder))
时间复杂度:O(N)
空间复杂度:O(N)