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

题目来源


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

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


题意分析


Input: a binary tree, sum

Output: list of list.

Conditions: 给定一个二叉树,将所有root-leaf的路径值和等于sum的路径返回。


题目思路


通过一个valuelist传递。dfs递归


AC代码(Python)

 1 # Definition for a binary tree node.
 2 # class TreeNode(object):
 3 #     def __init__(self, x):
 4 #         self.val = x
 5 #         self.left = None
 6 #         self.right = None
 7 
 8 class Solution(object):
 9     def pathSum(self, root, sum):
10         """
11         :type root: TreeNode
12         :type sum: int
13         :rtype: List[List[int]]
14         """
15         def dfs(root, currsum, valuelist):
16             if root.left == None and root.right == None:
17                 if currsum == sum: res.append(valuelist)
18             if root.left:
19                 dfs(root.left, currsum+root.left.val, valuelist+[root.left.val])
20             if root.right:
21                 dfs(root.right, currsum+root.right.val,valuelist+[root.right.val])
22         
23         res = []
24         if root ==None: return res
25         dfs(root, root.val, [root.val])
26         return res

 

posted @ 2016-05-17 17:03  loadofleaf  Views(368)  Comments(0Edit  收藏  举报