[路飞]_路径总和

292 阅读1分钟

112. 路径总和

题目

给你二叉树的根节点 root 和一个表示目标和的整数 targetSum 。判断该树中是否存在 根节点到叶子节点 的路径,这条路径上所有节点值相加等于目标和 targetSum 。如果存在,返回 true ;否则,返回 false 。

叶子节点 是指没有子节点的节点。

示例1

image.png

输入: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)

    }

};