Leetcode JAVA刷刷站(112)路径总和

news/2025/1/15 12:21:49/

 一、题目概述

二、思路方向 

       为了解决这个问题,我们可以使用深度优先搜索(DFS)算法来遍历二叉树,并检查从根节点到叶子节点的路径和是否等于目标和。

三、代码实现   

java">class TreeNode {  int val;  TreeNode left;  TreeNode right;  TreeNode(int x) { val = x; }  
}  public class Solution {  public boolean hasPathSum(TreeNode root, int targetSum) {  // 如果根节点为空,则无法找到路径  if (root == null) {  return false;  }  // 如果当前节点是叶子节点,则检查当前节点的值是否等于目标和  if (root.left == null && root.right == null) {  return root.val == targetSum;  }  // 递归地在左子树和右子树中查找路径和  // 减去当前节点的值,将剩余的目标和传递给子树  return hasPathSum(root.left, targetSum - root.val) || hasPathSum(root.right, targetSum - root.val);  }  public static void main(String[] args) {  // 示例用法  TreeNode root = new TreeNode(5);  root.left = new TreeNode(4);  root.right = new TreeNode(8);  root.left.left = new TreeNode(11);  root.left.left.left = new TreeNode(7);  root.left.left.right = new TreeNode(2);  root.right.left = new TreeNode(13);  root.right.right = new TreeNode(4);  root.right.right.right = new TreeNode(1);  Solution solution = new Solution();  boolean result = solution.hasPathSum(root, 22);  System.out.println("Does the path exist? " + result); // 应该输出 true  result = solution.hasPathSum(root, 20);  System.out.println("Does the path exist? " + result); // 应该输出 false  }  
}

执行结果: 

四、小结

       这段代码首先定义了一个TreeNode类来表示二叉树的节点。然后,在Solution类中定义了一个hasPathSum方法,该方法接收二叉树的根节点和一个目标和targetSum作为参数。该方法使用递归的方式遍历二叉树,在遍历过程中不断减去当前节点的值,直到遇到叶子节点时检查剩余的目标和是否为零。如果在某条路径上,从根节点到叶子节点的所有节点值之和等于目标和,则返回true;如果遍历完所有路径都没有找到符合条件的路径,则返回false

       在main方法中,我们创建了一个示例二叉树,并调用hasPathSum方法来检查是否存在路径和等于特定值的情况,并打印结果。

 结语 

勤奋是你生命的密码

能译出你一部壮丽的史诗

!!!


http://www.ppmy.cn/news/1522330.html

相关文章

架构全景视图

文章目录 一、战略规划二、业务架构Business Architecture2.1业务架构定义2.2 业务架构组成2.3 TOGAF2.3.1 Archimate建模(重要) 三、数据架构Data Architecture3.1 数据架构定义3.2 数据架构组成 四、应用架构Application Architecture4.1 应用架构定义…

相亲交友系统商业开发

在快节奏的现代生活中,寻找真爱成为了许多人的渴望。相亲交友系统,作为连接心灵的桥梁,正逐渐成为人们寻找伴侣的首选方式。我们的团队h17711347205致力于开发一款创新的相亲交友系统,旨在通过智能化的匹配算法,为用户…

The Prompt Report 2

The Prompt Report 提示工程调查报告《The Prompt Report: A Systematic Survey of Prompting Techniques》 主要内容 Core Prompting Techniques Text based Techniques:PRISMA流程,58中基于文本的提示技术,提示语术语分类表;M…

java opencv no opencv_java490 in java.library.path

java使用opencv处理图片,idea运行程序,报错异常信息: Exception in thread "main" java.lang.UnsatisfiedLinkError: no opencv_java490 in java.library.path: /Users/carter/Library/Java/Extensions:/Library/Java/Extensions:…

知名数字化增长战略研究学者专家教授顾问培训讲师唐兴通增长战略增长结构增长机会

唐兴通 数字化商业创新顾问、数字营销专家、数字化转型教练、沃顿商学院演讲嘉宾。全球商业思想大家EM罗杰斯(创新的扩散)、杰弗里摩尔(跨越鸿沟)、马修狄克逊(挑战式销售)、布兰登博格(竞合战…

❤《实战纪录片 1 》原生开发小程序中遇到的问题和解决方案

《实战纪录片 1 》原生开发小程序中遇到的问题和解决方案 文章目录 《实战纪录片 1 》原生开发小程序中遇到的问题和解决方案1、问题一:原生开发中 request请求中返回 的数据无法 使用this传递给 data{}中怎么办?2、刚登录后如何将token信息保存&#xf…

最新版 | 深入剖析SpringBoot3源码——分析自动装配原理(面试常考)

文章目录 一、自动配置概念二、半自动配置(误~🙏🙏)三、源码分析1、验证DispatcherServlet的自动配置2、源码分析入口SpringBootApplication3、SpringBootConfiguration的Configuration4、EnableAutoConfiguration的AutoConfigura…

【C语言】详解数组

文章目录 前言一、数组的概念二、一维数组1.一维数组的创建2.一维数组的初始化3. 一维数组的使用4.一维数组在内存中的存储 三、二维数组1.二维数组的创建2. 二维数组的初始化3. 二维数组的使用4.二维数组在内存中的存储 前言 一、数组的概念(数组是一组相同类型元素…