Construct Binary Tree from Inorder and Postorder Traversal
https://leetcode.com/explore/learn/card/data-structure-tree/133/conclusion/942/
# 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