题目
给你二叉树的根节点 root 和一个表示目标和的整数 targetSum 。判断该树中是否存在 根节点到叶子节点 的路径,这条路径上所有节点值相加等于目标和 targetSum 。如果存在,返回 true ;否则,返回 false 。
叶子节点 是指没有子节点的节点。
示例1
输入:root = [5,4,8,11,null,13,4,7,2,null,null,null,1], targetSum = 22
输出:true
解释:等于目标和的根节点到叶节点路径如上图所示。
DFS
又见深度优先遍历的题目
深度优先遍历,从根节点开始,递归累加节点值,一直二叉树叶子节点;当到达叶子节点判断当前累加和是否为targetSum;
如果是;返回true,否则返回false
代码
var hasPathSum = function(root, targetSum) {
if(root === null) return false
let result = false
helper(root,0);
return result
function helper(node,num){
if(node.left === null && node.right === null){
if(targetSum === num + node.val)result = true;
return
}
node.left && helper(node.left,num + node.val)
node.right && helper(node.right,num + node.val)
}
};