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.
10
/ \
5 -3
/ \ \
3 2 11
/ \ \
3 -2 1
- 5 -> 3
- 5 -> 2 -> 1
- -3 -> 11
# Definition for a binary tree node.
class TreeNode:
def __init__(self, x):
self.val = x
self.left = None
self.right = None
class Solution:
def pathSum(self, root, sum):
"""
:type root: TreeNode
:type sum: int
:rtype: int
"""
def solve(root,sum): #from root to the child
if root is None:
return 0
return int(root.val==sum) + solve(root.left,sum-root.val) + solve(root.right,sum-root.val)
if root is None:
return 0
return solve(root,sum) + self.pathSum(root.left,sum) + self.pathSum(root.right,sum) #choose root and not choose root