给你二叉树的根节点 root 和一个整数目标和 targetSum ,找出所有 从根节点到叶子节点 路径总和等于给定目标和的路径。
思路:
1.终止条件:nodenull || 叶子节点 node.val+sumtargetSum
2.递归条件:左子树和右子树均需递归
var pathSum = function(root, targetSum) {
const result=[]
const pathSumFunction=(node,path,sum) =>{
if(node==null){
return
}
path.push(node.val)
let temp=sum+node.val
if(node.left==null && node.right==null){
if(temp==targetSum){
//存储路径时,必须用slice方法,否则path改变时,result对应的也会改变
result.push(path.slice())
return
}
}else{
pathSumFunction(node.left,path,temp)
pathSumFunction(node.right,path,temp)
}
path.pop()
}
pathSumFunction(root,[],0)
return result
};
const root = {
val: 5,
left: {
val: 4,
left: {
val: 11,
left: { val: 7, left: null, right: null },
right: { val: 2, left: null, right: null },
},
right: null,
},
right: {
val: 8,
left: { val: 13, left: null, right: null },
right: {
val: 4,
left: { val: 5, left: null, right: null },
right: { val: 1, left: null, right: null },
},
},
};
console.log(pathSum(root, 22));