437.路径总和 III

路径总和 III

给定一个二叉树的根节点 root,和一个整数 targetSum,求该二叉树里节点值之和等于 targetSum 的路径的数目。路径不需要从根节点开始,也不需要在叶子节点结束,但是路径方向必须是向下的。

解析

前缀和 + 回溯。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
var pathSum = function (root, targetSum) {
let count = 0;
const prefixMap = new Map([[0, 1]]);
function dfs(node, currSum) {
if (!node) return;
currSum += node.val;
count += prefixMap.get(currSum - targetSum) || 0;
prefixMap.set(currSum, (prefixMap.get(currSum) || 0) + 1);
dfs(node.left, currSum);
dfs(node.right, currSum);
prefixMap.set(currSum, prefixMap.get(currSum) - 1);
}
dfs(root, 0);
return count;
};

437.路径总和 III
https://leetcode.lz5z.com/437.path-sum-iii/
作者
tickli
发布于
2024年10月2日
许可协议