437. 路径总和 III(中)

题目

  • 给定一个二叉树的根节点 root ,和一个整数 targetSum ,求该二叉树里节点值之和等于 targetSum 的 路径 的数目。

    路径 不需要从根节点开始,也不需要在叶子节点结束,但是路径方向必须是向下的(只能从父节点到子节点)。

题解:dfs+递归

var pathSum = function(root, targetSum) {
    //根节点为空
    if(root === null) return 0
    let cnt = 0 //计数
    //dfs
    var dfs=(node, currentSum)=>{
        //当前节点是叶子节点时为出口
        if(node === null) return
        //更新当前路径的和
        currentSum+=node.val
        //如果路径和等于目标值,计数加1
        if(currentSum === targetSum){
            cnt++
        }
        //递归左右
        dfs(node.left,currentSum)
        dfs(node.right,currentSum)
    }
    //从根节点开始进行dfs
    dfs(root,0)
    //递归左右子树,累加计数
    cnt += pathSum(root.left,targetSum)
    cnt += pathSum(root.right,targetSum)
    return cnt
};
posted @ 2025-02-20 10:34  Frommoon  阅读(16)  评论(0)    收藏  举报