题解 | #重建二叉树#

重建二叉树

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

相关推荐

点赞 评论 收藏
分享
03-19 10:07
已编辑
广东药科大学 golang
Yki_:你倒是进一个面啊
点赞 评论 收藏
分享
评论
3
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务