题目如下:
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 1Return 3. The paths that sum to 8 are:1. 5 -> 32. 5 -> 2 -> 13. -3 -> 11
解题思路:题目数据量不大,我尝试着用递归嵌套递归的方法,发现也能AC。
代码如下:
# Definition for a binary tree node.# class TreeNode(object):# def __init__(self, x):# self.val = x# self.left = None# self.right = Noneclass 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