Path Sum III
Description
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 = 810 / \ <b>5</b> <b>-3</b>
/ </b> </b> 3 2 11 / \ </b> 3 -2 1
Return 3. The paths that sum to 8 are:
- 5 -> 3
- 5 -> 2 -> 1
- -3 -> 11
Solution(javascript)
/** Prefix Sum 注意这里的顺序
* @param {TreeNode} root
* @param {number} sum
* @return {number}
*/
const pathSum = function (root, sum) {
let count = 0
const map = {0: 1}
const aux = (node, current) => {
if (!node) {
return
}
const next = current + node.val
if (map[next - sum] > 0) {
count += map[next - sum]
}
map[next] = (map[next] || 0) + 1
aux(node.left, current + node.val)
aux(node.right, current + node.val)
map[next] -= 1
}
aux(root, 0)
return count
}