题目如下:
You are given a binary tree in which each node contains an integer value.
Find the number of paths that sum to a given value.
The path does not need to start or end at the root or a leaf, but it must go downwards (traveling only from parent nodes to child nodes).
The tree has no more than 1,000 nodes and the values are in the range -1,000,000 to 1,000,000.
Example:
root = [10,5,-3,3,2,null,11,3,-2,null,1], sum = 8 10 / 5 -3 / 3 2 11 / 3 -2 1 Return 3. The paths that sum to 8 are: 1. 5 -> 3 2. 5 -> 2 -> 1 3. -3 -> 11
解题思路:题目数据量不大,我尝试着用递归嵌套递归的方法,发现也能AC。
代码如下:
# 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): res = 0 def recursive(self,node,sum): self.recursive2(node,0,sum) if node.left != None: self.recursive(node.left, sum) if node.right != None: self.recursive(node.right,sum) def recursive2(self,node,amount,sum): if node.val + amount == sum: self.res += 1 if node.left != None: self.recursive2(node.left, amount + node.val , sum) if node.right != None: self.recursive2(node.right,amount + node.val, sum) def pathSum(self, root, sum): """ :type root: TreeNode :type sum: int :rtype: int """ self.res = 0 if root != None: self.recursive(root,sum) return self.res