Construct Binary Tree from Inorder and Postorder Traversal
https://leetcode.com/explore/learn/card/data-structure-tree/133/conclusion/942/
这道题很高频,也是有难点。trick的地方在于我们要知道两个特性
(1)当前的node的值在postorder的最后一个
(2) inorder 值得两边是它left,right subtree的 值得array
# 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:
def dfs(l,r):
if l > r:
return
val = postorder.pop()
root = TreeNode(val)
idx = inorder.index(val)
root.right = dfs(idx+1,r)
root.left = dfs(l,idx-1)
return root
n = len(inorder)
return dfs(0,n-1)
Last updated
Was this helpful?