题解 | #重建二叉树#

重建二叉树

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)
            
全部评论

相关推荐

迷茫的大四🐶:你这个拿去投央国企吧,投私企包过不了的
点赞 评论 收藏
分享
孙艹肘:校招不给三方直接让实习我都去了,,主打一个在学校呆着也是闲着,不如出来实习一下
点赞 评论 收藏
分享
评论
3
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务