题解 | #二叉树根节点到叶子节点和为指定值的路径#

二叉树根节点到叶子节点和为指定值的路径

http://www.nowcoder.com/practice/840dd2dc4fbd4b2199cd48f2dadf930a

dfs递归:

  • 先左后右,或,先右后左都可以
  • 本代码使用了一个全局的temp,用来保存递归过程中的val,所以以先左后右为例,当右叶子判断完后,应该执行temp.pop(),将val回溯到上一个节点
  • 值得注意的是,由于是全局temp,所以在使用res.append(temp)时,temp的变化会反映在res上,因此应该使用res.append(list(temp)),拷贝一份副本给res
# class TreeNode:
#     def __init__(self, x):
#         self.val = x
#         self.left = None
#         self.right = None
#
# 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
#
# 
# @param root TreeNode类 
# @param sum int整型 
# @return int整型二维数组
#
class Solution:
    def pathSum(self , root: TreeNode, sum: int) -> List[List[int]]:
        # write code here
        if not root:return []
        res,temp=[],[]
        def dfs(root,a):
            if not root:return
            temp.append(root.val)
            a-=root.val
            if not root.left and not root.right:
                if a==0:
                    res.append(list(temp))
            dfs(root.left,a)
            dfs(root.right,a)
            temp.pop()
        dfs(root,sum)
        return res
全部评论

相关推荐

会飞的猿:本人来了,手一抖转错了,我是学生,能还给我吗
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务