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
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
func pathSum(_ root: TreeNode?, _ sum: Int) -> Int { return pathSumNote(root, sum).0 } private func pathSumNote(_ root: TreeNode?, _ sum: Int) -> (Int, [Int]) { guard let p = root else { return (0, []) } let ls = pathSumNote(p.left, sum) let rs = pathSumNote(p.right, sum) let arr = (ls.1 + rs.1).map({$0 + p.val}) + [p.val] let sum = ls.0 + rs.0 + arr.filter({$0 == sum}).count return (sum, arr) } |
❤ 点击这里 -> 订阅《PAT | 蓝桥 | LeetCode学习路径 & 刷题经验》by 柳婼