前言
掘金团队号上线,助你 Offer 临门! 点击 查看详情
题目描述
解题思路
- 这道题属于二叉树的深度优先遍历
- 首先我们要了解DFS的遍历过程
- 当root节点走到null的时候,说明该条路径已经遍历完毕
- 当一条路径遍历完毕之后,我们使用浅拷贝的方式将一条路径拷贝进res最终结果数组中
- 然后开始返回,每次返回都要将stack数组的最后一个元素清空,这是本题的核心点,刚开始被这个问题困扰了很久。
解题代码
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((value) => {
return value.reduce((pre, cur) => pre + cur, 0) === target;
})
return temp;
};
复制代码
总结(本题给我们的启示思路)
- 思路一:如何使用DFS算法遍历二叉树。
- 思路二:在进行遍历的时候,该返回什么?什么时候进行存储才是本题的核心,才应当是我们应该多加练习的地方。
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END