主页 > 软件开发  > 

leetcode113-路径总和II

leetcode113-路径总和II

leetcode 113

思路

本题可以参考:求二叉树的所有路径 方法是很相似的,只不过我们这里多了个条件,需要路径和等于目标值的才能作为结果加入,所以每次遍历需要传入目标值,最开始传入目标值,然后每到一个节点就减去这个节点的值,最终到叶子节点的时候,如果值为0,说明这条路径的和是等于目标值的,所以可以放入result中 需要特别注意⚠️的是:最终存放结果的时候不可以直接result.push(path) 因为后序还会对path进行操作,push或者pop操作都是直接在修改path,如果result这里直接push(path),那么这时候放入的是数组的地址,后面对path的更改都会影响到它,所以需要生成一个新的地址来存放,以免结果受影响

实现 var pathSum = function (root, targetSum) { if (!root) return []; let result = []; const deep = (node, path, target) => { const item = target - node.val; path.push(node.val) if (!node.left && !node.right) { if (item === 0) { // 这里需要注意,要生成一个新的数组,而不是直接使用path result.push([...path]) } } if (node.left) { deep(node.left, path, item) path.pop() } if (node.right) { deep(node.right, path, item) path.pop() } } deep(root, [], targetSum) return result; };
标签:

leetcode113-路径总和II由讯客互联软件开发栏目发布,感谢您对讯客互联的认可,以及对我们原创作品以及文章的青睐,非常欢迎各位朋友分享到个人网站或者朋友圈,但转载请说明文章出处“leetcode113-路径总和II