【算法二十九】 437. 路径总和 III

437. 路径总和 III

前缀和+递归:

java 复制代码
class Solution {
    private int ans;
    public int pathSum(TreeNode root, int targetSum) {
        Map<Long,Integer> count = new HashMap<>();
        count.put(0L,1);
        Long pre = 0L;
        dfs(root,targetSum,pre,count);
        return ans;
    }

    private void dfs(TreeNode node,int targetSum,Long pre,Map<Long,Integer> count){
        if(node == null){
            return;
        }
        pre += node.val;
        ans += count.getOrDefault(pre-targetSum,0);
        count.merge(pre,1,Integer::sum);
        dfs(node.left,targetSum,pre,count);
        dfs(node.right,targetSum,pre,count);
        //恢复,因为左边树弄完还有右边树
        count.merge(pre,-1,Integer::sum);
    }
}

时间复杂度:O(N)

空间复杂度:O(N)

相关推荐
happyprince1 小时前
03_NVIDIA_ModelOpt-量化算法深入
人工智能·深度学习·算法
大鱼>1 小时前
AI+货物追踪:智能快递柜追踪系统
人工智能·深度学习·算法·机器学习
researcher-Jiang2 小时前
算法训练:堆 & 可并堆
算法
在书中成长2 小时前
HarmonyOS 小游戏《对战五子棋》开发第18篇 - 棋盘设计
算法·harmonyos
Frostnova丶2 小时前
(12)LeetCode 76. 最小覆盖子串
算法·leetcode·职场和发展
灯澜忆梦3 小时前
GO_函数_1
算法
言乐63 小时前
Python实现建造微服务商城后台
开发语言·python·算法·微服务·架构
凉云生烟3 小时前
机器学习 02- KNN算法
人工智能·算法·机器学习
wabs6663 小时前
关于动态规划【力扣583.两个字符串的删除操作的思考】
算法·leetcode·动态规划
可编程芯片开发3 小时前
空气流量和空气压力参数解耦系统simulink建模与仿真
算法