LeetCode #106. Construct Binary Tree from Inorder and Postorder Traversal
题目
106. Construct Binary Tree from Inorder and Postorder Traversal
解题方法
这道题与105. Construct Binary Tree from Preorder and Inorder Traversal的区别在于给的条件不同,之前给的是先序遍历和中序遍历,这次给的是中序遍历和后序遍历,但解决问题的思路类似,都是先通过前序和后序遍历确定根在中序的位置,再将其一分为二分别递归。
值得注意的是,面试中建议采用字典的方法来减少大量的计算时间。
代码
class Solution:
def buildTree(self, inorder: List[int], postorder: List[int]) -> TreeNode:
map_inorder = {}
for i, val in enumerate(inorder):
map_inorder[val] = i
def recur(low, high):
if low > high:
return None
x = TreeNode(postorder.pop())
mid = map_inorder[x.val]
x.right = recur(mid + 1, high)
x.left = recur(low, mid - 1)
return x
return recur(0, len(inorder) - 1)

浙公网安备 33010602011771号