当前位置: 首页 > news >正文

leetcode437.路径总和|||

对于根结点来说,可以选择当前结点为路径也可以不选择,但是一旦选择当前结点为路径那么后续都必须要选择结点作为路径,不然路径不连续是不合法的,所以这里分开出来两个方法进行递归

由于力扣最后一个用例解答错误,分析发现targetSum减法多次后可能越界之类的情况把参数类型改为了long

/**
 * Definition for a binary tree node.
 * public class TreeNode {
 *     int val;
 *     TreeNode left;
 *     TreeNode right;
 *     TreeNode() {}
 *     TreeNode(int val) { this.val = val; }
 *     TreeNode(int val, TreeNode left, TreeNode right) {
 *         this.val = val;
 *         this.left = left;
 *         this.right = right;
 *     }
 * }
 */
class Solution {
    public int pathSum(TreeNode root, long targetSum) {
        if (root == null) {
            return 0;
        } else {
            if (targetSum - root.val == 0) {
                return 1
                        + getSum(root.left, targetSum - root.val)
                        + getSum(root.right, targetSum - root.val)
                        + pathSum(root.left, targetSum)
                        + pathSum(root.right, targetSum);
            } else {
                return getSum(root.left, targetSum - root.val)
                        + getSum(root.right, targetSum - root.val)
                        + pathSum(root.left, targetSum)
                        + pathSum(root.right, targetSum);
            }
        }
    }

    private int getSum(TreeNode root, long targetSum) {
        if (root == null) {
            return 0;
        } else {
            targetSum-=root.val;
            if (targetSum == 0) {
                return 1 + getSum(root.left, targetSum) + getSum(root.right, targetSum);
            } else {
                return getSum(root.left, targetSum) + getSum(root.right, targetSum);
            }
        }
    }
}

 

http://www.dtcms.com/a/101290.html

相关文章:

  • C语言中的动态内存管理的学习
  • C++搜索
  • 【鸿蒙5.0】鸿蒙登录界面 web嵌入(隐私页面加载)
  • HTTP缓存
  • 【STL】deque(了解)
  • Linux | I.MX6ULL 终结者底板原理图讲解(4)
  • beikeshop多商户跨境电商独立站最新版v1.6.0版本源码
  • ACM模式常用方法总结(Java篇)
  • StarVector:开启多模态SVG生成的新纪元——开源AI模型的革新之作
  • 豪越科技消防一体化平台:打通消防管理“任督二脉”
  • 深度学习处理文本(2)
  • C语言快速入门-C语言基础知识
  • 2025年03月28日Github流行趋势
  • 10分钟看明白爆火的本地知识库! 掌握本地知识库基本概念与RAG的完整架构
  • 一文速通Python并行计算:04 Python多线程编程-多线程同步(下)—基于条件变量、事件和屏障
  • 【云原生】在Kubernetes上搭建Keycloak26.1.4
  • 【Rust基础】使用LanceDB构建高性能以图搜图服务
  • 代码随想录|回溯算法|09分割回文串
  • 排序--归并排序
  • Kubernetes service 基于工作原理的实验
  • IDEA 接入 Skywalking Agent ClassNotFoundException
  • 基于多二阶广义积分器的正负序谐波提取方法
  • 人体的三个 Bug
  • 全局引用,utils 目录下的文件打包并安装到系统Python环境中
  • 漏洞挖掘---迅饶科技X2Modbus网关-GetUser信息泄露漏洞
  • 基于javaweb的SSM公寓房屋出租系统设计与实现(源码+文档+部署讲解)
  • 五.ubuntu20.04 - ffmpeg推拉流以及Nginx、SRS本地部署
  • Maven 构建生命周期
  • React(六)React过渡动画-CSS编写方式
  • Altium Designer 24 PCB编辑器[设计]栏找不到[规则]选项而只有[Constraints Manager]选项