[LeetCode]题解(python):113-Path Sum II

题目来源:

  https://leetcode.com/problems/path-sum-ii/


 

题意分析:

  给出一个二叉树和一个整数,返回所有从根节点到叶节点的和等于这个整数的路径。


 

题目思路:

  这题和上一题类似,直接深度递归。记录左子树和sum - 根的值的答案,以及右子树和sum- 根的值的答案。


 

代码(python):

# Definition for a binary tree node.
# class TreeNode(object):
#     def __init__(self, x):
#         self.val = x
#         self.left = None
#         self.right = None

class Solution(object):
    def pathSum(self, root, sum):
        """
        :type root: TreeNode
        :type sum: int
        :rtype: List[List[int]]
        """
        if root == None:
            return []
        ans = []
        if root.left == None and root.right == None:
            if root.val == sum:
                return [[sum]]
            else:
                return []
        l,r = self.pathSum(root.left,sum - root.val),self.pathSum(root.right,sum - root.val)
        for i in l:
            ans.append([root.val] + i)
        for i in r:
            ans.append([root.val] + i)
        return ans
View Code

 

posted @ 2016-03-09 16:06  Ry_Chen  阅读(504)  评论(0编辑  收藏  举报