思路
和112不同的点在于返回值的变化,仍然用递归的思想
终止条件:叶子节点且cnt为0,说明它是路径总和,将path路径存到res,如果cnt不为0,则说明该路径不是
JS语言
var pathSum = function(root, targetSum) {
let res=[];
const travels=function(root,cnt,path){
if(!root.left&& !root.right&&cnt==0){
res.push([...path]); //深拷贝
return ;
}
if(!root.left&&!root.right){
return ;
}
if(root.left){
path.push(root.left.val); //递归节点输入
travels(root.left,cnt-root.left.val,path);
path.pop(); //回溯
}
if(root.right){
path.push(root.right.val);
travels(root.right,cnt-root.right.val,path);
path.pop();
}
return ;
}
if(!root) return res;
travels(root,targetSum-root.val,[root.val]);
return res;
};