一、题目

二、题目分析
1.给了一个root 和 targetSum , 任务: 找出所有从根节点到叶节点(没有子节点的节点)路径总和等于给定目标和的路径
2.解决方法: 遍历整个树,找到总和符合目标树的,放到一个数组里存着,然后输出该数组即可
3.问题:在遍历的时候,把每个元素放到一起然后算出总和,怎么能保证在遍历新的节点的时候,不会改变已经遍历完的节点
解决方法:我们可以利用到 slice() 方法进行解决:可以从已有的数组返回选定的元素、不会修改原数组,只会返回一个浅复制了原数组中的元素的一个新数组。
三、代码
/** * Definition for a binary tree node. * function TreeNode(val, left, right) { * this.val = (val===undefined ? 0 : val) * this.left = (left===undefined ? null : left) * this.right = (right===undefined ? null : right) * } */ /** * @param {TreeNode} root * @param {number} target * @return {number[][]} */ var pathSum = function(root, target) { let res = []; function dfs(root, sum, path) { if(!root) return; if (root.val === sum && !root.left && !root.right) { res.push(path); } path.push(root.val); dfs(root.left, sum - root.val, path.slice()); dfs(root.right, sum - root.val, path.slice()); } dfs(root, target, []); return res; };
浙公网安备 33010602011771号