1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32
|
function pathSum(root: TreeNode | null, targetSum: number): number { const pathMap: Map<number, number> = new Map() pathMap.set(0, 1) return traverse(root, pathMap, targetSum, 0) };
function traverse(node: TreeNode, pathMap: Map<number, number>, target: number, curr: number): number { if (node === null) return 0 let res = 0 curr += node.val res += pathMap.get(curr - target) || 0 pathMap.set(curr, (pathMap.get(curr) || 0) + 1) res += traverse(node.left, pathMap, target, curr) res += traverse(node.right, pathMap, target, curr) pathMap.set(curr, pathMap.get(curr) - 1) return res }
|