113. 路径总和 II
给你二叉树的根节点 root 和一个整数目标和 targetSum ,找出所有 从根节点到叶子节点 路径总和等于给定目标和的路径。
叶子节点 是指没有子节点的节点。
解:
- 思路比较简单,就是将之前走过的路径都用数组记录下,到叶节点的时候判断之前的累加和加上当前节点是否正确,正确就加入结果数组。
- 由于数组是引用类型值,所以需要在递归结束后将数组复原,否则会造成元素不停累加。
- 也可以用字符串来记录路径,不需要复原数组
const pathSum = function(root, targetSum) {
const res = []
function getRes(node, preNode, preSum) {
if (!node) return
preNode.push(node.val)
preSum += node.val
if (!node.left && !node.right && preSum === targetSum) {
res.push([...preNode])
}
node.left && getRes(node.left, preNode, preSum)
node.right && getRes(node.right, preNode, preSum)
preNode.pop()
}
getRes(root, [], 0)
return res
};