105. 从前序与中序遍历序列构造二叉树

0 阅读1分钟

105. 从前序与中序遍历序列构造二叉树

给定两个整数数组 preorder 和 inorder ,其中 preorder 是二叉树的先序遍历, inorder 是同一棵树的中序遍历,请构造二叉树并返回其根节点。

class Solution:
    def buildTree(self, preorder: List[int], inorder: List[int]) -> Optional[TreeNode]:
        if not preorder:
            return
        root_val=preorder[0]
        root=TreeNode(root_val)
        sep_idx=inorder.index(root_val)
        inleft=inorder[:sep_idx]
        preleft=preorder[1:sep_idx+1]
        inright=inorder[sep_idx+1:]
        preright=preorder[sep_idx+1:]
        root.left=self.buildTree(preleft,inleft)
        root.right=self.buildTree(preright,inright)
        return root

这里主要是需要想到递归的办法,似乎也没有很难哈哈