113. 路径总和 II
给你二叉树的根节点 root 和一个整数目标和 targetSum ,找出所有 从根节点到叶子节点 路径总和等于给定目标和的路径。
叶子节点 是指没有子节点的节点。
示例 1:
输入:root = [5,4,8,11,null,13,4,7,2,null,null,5,1], targetSum = 22
输出:[[5,4,11,2],[5,8,4,5]]
**思路:**深度搜索根到叶子结点,求和,当遍历到叶子结点时,判断和是否为sum,是push到结果里面,否则继续遍历左子树和右子树。如果不满足条件,需要弹出栈顶并且sum减去。
var pathSum = function(root, targetSum) {
let sum = 0;
let item = [];
let result = [];
preorder(root,targetSum,sum,item,result);
return result;
};
var preorder = function(root,targetSum,sum,item,result){
if(!root){
return;
}
sum += root.val;
item.push(root.val);
if(sum === targetSum && !root.left && !root.right){
result.push(item.slice());
}
preorder(root.left,targetSum,sum,item,result);
preorder(root.right,targetSum,sum,item,result);
sum -= root.val;
item.pop()
}