LeetCode 113. Path Sum II 20170705 部分之前做了没写的题目

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LeetCode 113. Path Sum II 20170705 部分之前做了没写的题目相关的知识,希望对你有一定的参考价值。

Given a binary tree and a sum, find all root-to-leaf paths where each path\'s sum equals the given sum.

For example:
Given the below binary tree and sum = 22,

              5
             / \\
            4   8
           /   / \\
          11  13  4
         /  \\    / \\
        7    2  5   1

return

[
   [5,4,11,2],
   [5,8,4,5]
]

题目大意:给定一棵二叉树和一个总和,找出所有从根节点到叶节点的路径上所有节点的值之和等于给定总和的路径集合

解题思路:该题目跟上一题PATH SUM非常相似,只不过上一题只需判断是否存在符合条件的路径,而该题需要将符合条件的路径输出,难度加大了。解题的思路是,像上一题一样遍历整棵树,每走一步,就先用sum减掉父节点的值,然后这里要多做一步就是把父节点的值加入到当前路径中。最后到了叶子节点的时候,判断当前sum是否等于叶子节点的值,如果相等的话,说明该条路径是符合要求的路径,把叶子节点的值也加入当前路径中然后输出。

class Solution(object):
  def pathSum(self, root, sum):
    """
    :type root: TreeNode
    :type sum: int
    :rtype: List[List[int]]
    """
    A=[]
    def haspathSum(root, sum, path):
      if root == None:
        return A
      if sum == root.val and root.left == None and root.right == None:
        return A + [path + [root.val]]
      else:
        return haspathSum(root.left, sum - root.val, path + [root.val]) + haspathSum(root.right, sum - root.val, path + [root.val])
    return haspathSum(root, sum, [])

 

以上是关于LeetCode 113. Path Sum II 20170705 部分之前做了没写的题目的主要内容,如果未能解决你的问题,请参考以下文章

leetcode [113]Path Sum II

[LeetCode] 113. Path Sum II 路径和 II

LeetCode 113. Path Sum II

Leetcode 113: Path Sum II

LeetCode 113:Path Sum II

LeetCode113 Path Sum II