特别简单的一道题,但是我写了大半个小时了,刚开始一直通过99个案例,开始觉得是有重复遍历的,但是怎么都改不好,最后改好了,但是超时了,因为我当时为了查看测试数据,添加了好多数组,最后我把数组去掉后就不超时了。虽然执行时间有点长,但是毕竟也是写出来了。代码如下。
var pathSum = function(root, targetSum) {
let idx = 0;
let map = new Map();
function dfs(root,targetSums){
if(!root)return;
if(targetSums===root.val){
idx++;
}
const left = map.get(root.left);
const right = map.get(root.right);
if(!left){
if(root.left)map.set(root.left,1);
dfs(root.left,targetSum);
}
if(!right){
if(root.right)map.set(root.right,1);
dfs(root.right,targetSum);
}
dfs(root.left,targetSums-root.val);
dfs(root.right,targetSums-root.val);
}
dfs(root,targetSum);
return idx;
};