Construct Binary Tree from Preorder and Inorder Traversal

https://leetcode.com/explore/learn/card/data-structure-tree/133/conclusion/943/

preorder 和 postorder及其相似,唯一改变的地方就是

(1) postorder.pop()

(2) preorder.pop(0)

一个是最后开始pop,一个是从最前来取当前root的值

# 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, preorder: List[int], inorder: List[int]) -> TreeNode:
        def build(l,r):
            if l > r:
                return
            val = preorder.pop(0)
            root = TreeNode(val)
            idx = inorder.index(val)
            root.left = build(l,idx-1)
            root.right = build(idx+1,r)
            return root
        
        n = len(inorder)
        return build(0,n-1)

Last updated

Was this helpful?