【算法二十九】 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)

相关推荐
老余捞鱼9 分钟前
线性回归实战:5步验证你的量化因子是否真有效
算法·金融·回归·线性回归·ai量化
想吃火锅100512 分钟前
【leetcode】121.买卖股票的最佳时机js/c++
算法·leetcode·职场和发展
码云数智-大飞35 分钟前
RAII 与智能指针深度拆解
java·前端·算法
Dick50744 分钟前
ROS2 常用命令表
人工智能·学习·算法·机器人
apcipot_rain1 小时前
计科八股20260616(2)/面经——线性代数对称阵求n次幂、概率论最大似然估计
算法
cici158742 小时前
彩色图像模糊增强(Fuzzy Enhancement)MATLAB 实现
开发语言·算法·matlab
宝贝儿好2 小时前
【LLM】第二章:HuggingFace入门学习
人工智能·深度学习·神经网络·学习·算法·自然语言处理
凌波粒2 小时前
LeetCode--491.递增子序列(回溯算法)
数据结构·算法·leetcode
啵啵啵鱼2 小时前
数组---完
算法·排序算法
嘿黑嘿呦2 小时前
chap 8排序
算法·蓝桥杯·排序算法·软件工程