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.
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:
- 5 -> 3
- 5 -> 2 -> 1
- -3 -> 11
class Solution(object):
def pathSum(self, root, sum):
"""
:type root: TreeNode
:type sum: int
:rtype: int
"""
self.pathSum=0;
self.dfs(root,sum)
return self.pathSum
def dfs(self,root,target):
if(root==None):
return
self.test(root,target)
self.dfs(root.left,target)
self.dfs(root.right,target)
def test(self,root,target):
if(root==None):
return
if(root.val==target):
self.pathSum+=1
self.test(root.left,target-root.val)
self.test(root.right,target-root.val)