题解 | #重建二叉树#

重建二叉树

http://www.nowcoder.com/practice/8a19cbe657394eeaac2f6ea9b0f6fcf6

python dfs解法

dfs ,先找到中序里面前序遍历第一个值的位置idx,
则左节点的pre=pre[1:dix+1], vin=vin[:idx],
右节点pre=[idx+1:],vin=vin[idx+1:]

class Solution:
    def reConstructBinaryTree(self , pre: List[int], vin: List[int]) -> TreeNode:
        # write code here
        def dfs(p, v):
            if not p:
                return None
            node = TreeNode(p[0])
            idx = v.index(p[0])
            node.left = dfs(p[1:idx+1], v[:idx])
            node.right = dfs(p[idx+1:], v[idx+1:])
            return node
        return dfs(pre, vin)
            
全部评论

相关推荐

像好涩一样好学:这公司我也拿过 基本明确周六加班 工资还凑活 另外下次镜头往上点儿
点赞 评论 收藏
分享
hso_:哈哈哈哈哈哈我没offer一样在同一道题开喷了
投递深圳同为数码等公司10个岗位
点赞 评论 收藏
分享
3 收藏 评论
分享
牛客网
牛客企业服务