437. 路径总和 III --力扣 --JAVA

简介: 给定一个二叉树的根节点 root ,和一个整数 targetSum ,求该二叉树里节点值之和等于 targetSum 的 路径 的数目。路径 不需要从根节点开始,也不需要在叶子节点结束,但是路径方向必须是向下的(只能从父节点到子节点)。

 题目

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

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

解题思路

    1. 从每个节点开始向子节点遍历累加,当前达到目标值是结果加1;
    2. 方法一递归调用方法一;
    3. 方法二以当前节点的值为起始累加,符合结果则加1;

    代码展示

    class Solution {
        int ans = 0;
        int target;
        public int pathSum(TreeNode root, int targetSum) {
            target = targetSum;
            dfs1(root);
            return ans;
        }
        public void dfs1(TreeNode root){
            if(root == null){
                return;
            }
            dfs2(root,root.val);
            dfs1(root.left);
            dfs1(root.right);
        }
        public void dfs2(TreeNode root, long val){
            if(val == target) {
                ans++;
            } 
            //不用else if避免存在先+后-或先-后+的情况,所以只要还存在子节点就需要遍历
            if (root.left != null) {
                dfs2(root.left, val + root.left.val);
            } 
            if(root.right != null){
                dfs2(root.right, val + root.right.val);
            }
        }
    }

    image.gif


    目录
    相关文章
    【LeetCode 35】112.路径总和
    【LeetCode 35】112.路径总和
    121 0
    |
    5月前
    |
    算法 Java 测试技术
    Java 从入门到实战完整学习路径与项目实战指南
    本文详细介绍了“Java从入门到实战”的学习路径与应用实例,涵盖基础、进阶、框架工具及项目实战四个阶段。内容包括环境搭建、语法基础、面向对象编程,数据结构与算法、多线程并发、JVM原理,以及Spring框架等核心技术。通过学生管理系统、文件下载器和博客系统等实例,帮助读者将理论应用于实践。最后,提供全链路电商系统的开发方案,涉及前后端技术栈与分布式架构。附代码资源链接,助力成为合格的Java开发者。
    234 4
    |
    Java
    java小工具util系列5:java文件相关操作工具,包括读取服务器路径下文件,删除文件及子文件,删除文件夹等方法
    java小工具util系列5:java文件相关操作工具,包括读取服务器路径下文件,删除文件及子文件,删除文件夹等方法
    237 9
    |
    6月前
    |
    Go 开发者 索引
    【LeetCode 热题100】路径与祖先:二叉树中的深度追踪技巧(力扣33 / 81/ 153/154)(Go语言版)
    本文深入探讨了LeetCode中四道关于「搜索旋转排序数组」的经典题目,涵盖了无重复和有重复元素的情况。通过二分查找的变形应用,文章详细解析了每道题的解题思路和Go语言实现代码。关键点包括判断有序区间、处理重复元素以及如何缩小搜索范围。文章还总结了各题的异同,并推荐了类似题目,帮助读者全面掌握二分查找在旋转数组中的应用。无论是初学者还是有经验的开发者,都能从中获得实用的解题技巧和代码实现方法。
    303 14
    |
    7月前
    |
    算法 Go
    【LeetCode 热题100】深入理解二叉树结构变化与路径特性(力扣104 / 226 / 114 / 543)(Go语言版)
    本博客深入探讨二叉树的深度计算、结构变换与路径分析,涵盖四道经典题目:104(最大深度)、226(翻转二叉树)、114(展开为链表)和543(二叉树直径)。通过递归与遍历策略(前序、后序等),解析每题的核心思路与实现方法。结合代码示例(Go语言),帮助读者掌握二叉树相关算法的精髓。下一讲将聚焦二叉树构造问题,欢迎持续关注!
    189 10
    |
    7月前
    |
    Go
    【LeetCode 热题100】路径与祖先:二叉树中的深度追踪技巧(力扣437 / 236 )(Go语言版)
    本文深入探讨二叉树中路径与祖先问题,涵盖两道经典题目:LeetCode 437(路径总和 III)和236(最近公共祖先)。对于路径总和 III,文章分析了双递归暴力解法与前缀和优化方法,后者通过哈希表记录路径和,将时间复杂度从O(n²)降至O(n)。在最近公共祖先问题中,采用后序遍历递归查找,利用“自底向上”的思路确定最近公共祖先节点。文中详细解析代码实现与核心要点,帮助读者掌握深度追踪技巧,理解树结构中路径与节点关系的本质。这类问题在面试中高频出现,掌握其解法意义重大。
    178 4
    【LeetCode 36】113.路径总和II
    【LeetCode 36】113.路径总和II
    114 0
    |
    11月前
    |
    Java
    java实现从HDFS上下载文件及文件夹的功能,以流形式输出,便于用户自定义保存任何路径下
    java实现从HDFS上下载文件及文件夹的功能,以流形式输出,便于用户自定义保存任何路径下
    359 34
    |
    Java Android开发
    Eclipse Java 构建路径
    Eclipse Java 构建路径
    149 3
    |
    IDE Java 编译器
    Java:如何确定编译和运行时类路径是否一致
    类路径(Classpath)是JVM用于查找类文件的路径列表,对编译和运行Java程序至关重要。编译时通过`javac -classpath`指定,运行时通过`java -classpath`指定。IDE如Eclipse和IntelliJ IDEA也提供界面管理类路径。确保编译和运行时类路径一致,特别是外部库和项目内部类的路径设置。
    705 5
    下一篇
    oss云网关配置