题目描述
解题思路
题目中的关键字,“从根节点到叶子结点”、“求路径总和”,看到第一个关键字想到深度优先遍历,明确这道题考察dfs,dfs注重考察遍历和递归,注意临界条件。
- DFS coding过程;
- 当root节点走到null的时候,说明该条路径已经遍历完毕;
- 当一条路径遍历完毕之后,我们使用浅拷贝的方式将一条路径拷贝进res最终结果数组中;
- 然后开始返回,核心点,注意每次返回都要将stack数组的最后一个元素清空。
coding过程
var pathSum = function(root, target) {
const res = [];
let stack = [];
function dfs(node){
if(!node) return null;
stack.push(node.val);
let l = dfs(node.left);
let r = dfs(node.right);
if(l === null && r === null){
res.push([...stack])
}
stack.pop();
return
}
dfs(root)
const temp = res.filter((val) => {
return val.reduce((pre,cur) => pre + cur,0) === target
})
return temp
};