【LeetCode】【算法】437. 路径总和

LeetCode 437. 路径总和

题目描述

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

思路

思路:递归

  1. 方法pathSum中,我们知道可能的子路径为:从根节点出发的路径数量和+从根节点左子节点出发的路径数量和+从根节点右子节点出发的路径数量和
  2. 路径和通过rootSum方法求解,递归终止条件为root == null,此时返回0;
  3. rootSum方法中,获得root.val,如果root.val == target,则路径数量+1;到这里也不能返回,还要继续计算rootSum(root.left,targetSum-val)rootSum(root.right,targetSum-val)的和;因为即使当前root.val == target使得目标和变为0,但仍有可能存在后面结果相加为0的情况(负数正数相加)

代码

/*** 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 long rootSum(TreeNode root, long targetSum) {long ret = 0;if (root == null) return 0;
//        if (targetSum == 0) return 0; // 考虑反例root=[0,1,1], targetSum=0// 这里都是算这个root节点的情况long val = root.val;if (val == targetSum) {ret++;}ret += rootSum(root.left, targetSum - val); // targetSum - val == 0了也不可以直接不递归,因为子结果中还可能存在后面相加结果为0的情况ret += rootSum(root.right, targetSum - val);return ret;}public int pathSum(TreeNode root, int targetSum) {// 终止条件if (root == null) return 0;// 可能的子路径为:根节点出发的路径和+左子节点出发的路径和+右子节点出发的路径和long ret = rootSum(root, targetSum); // 根节点出发的路径和ret += pathSum(root.left, targetSum); // 左子节点出发的路径和,这个过程中可能算左子节点,可能不算左子节点ret += pathSum(root.right, targetSum); // 右子节点出发的路径和,这个过程中可能算右子节点,可能不算右子节点return (int)ret;}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/58532.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

SSM中maven

一:maven的分模块开发 maven分模块就是在多人操作一个项目时将maven模块导入依赖,注意仓库里面没有资源坐标,需要使用install操作下载。 二:maven的依赖管理 pom文件中直接写的依赖叫做直接依赖,直接依赖中用到的依…

java项目中如何有效提高List集合的读写速度?

在Java开发中,List集合是最常用的数据结构之一。它提供了动态数组的功能,能够存储任意数量的元素,并允许快速访问和修改。 然而,在某些情况下,List集合的读取和写入速度可能成为性能瓶颈。本文将探讨如何提高List集合…

25中海油笔试测评春招秋招校招暑期实习社招笔试入职测评行测题型微测网题型分享

中海油笔试一般采用线上机考的形式。考试时间为 120 分钟,满分 100 分。笔试内容主要包括思想素质测评和通用能力测评两个科目。以下是具体介绍: 1. 思想素质测评: ✅价值观:考察考生对工作、职业、企业等方面的价值观念和态度&…

FTP、ISCSI、CHRONY、DNS、NFS、DOCKER、MARIADB、NGINX、PHP、CA各服务开启方法

2.1 FTP 服务 (vsftpd) 安装 vsftpd: sudo yum install vsftpd -y 启动并设置开机自启: sudo systemctl start vsftpdsudo systemctl enable vsftpd 配置文件位于 /etc/vsftpd/vsftpd.conf,可根据需要修改配置。 2.2 SCSI 服务 SCSI 配…

【笔记】变压器-热损耗-频响曲线推导 - 04 额定功率处损耗特性

0.最大的问题 - 散热 对变压器这类功率器件,最大的问题是散热的效率。因为传统的电路基板热导率并不高,几乎和良性导热材料有近乎两个数量级的导热差异,所以,会采用特殊的导热技术,把热量尽可能快地传导到散热片。 传…

定高虚拟列表:让大数据渲染变得轻松

定高虚拟列表 基本认识 在数据如潮水般涌来的今天,如何高效地展示和管理这些数据成为了开发者们面临的一大挑战,传统的列表渲染方式在处理大量数据时,往往会导致页面卡顿、滚动不流畅等问题,严重影响用户体验(在页面…

我的博客网站为什么又回归Blazor了

引言 在博客网站的开发征程中,站长可谓是一路披荆斩棘。从最初的构思到实践,先后涉足了多种开发技术,包括 MVC、Razor Pages、Vue、Go、Blazor 等。在这漫长的过程中,网站版本更迭近 10 次,每一个版本都凝聚着站长的心…

Uniapp安装Pinia并持久化(Vue3)

安装pinia 在uni-app的Vue3版本中,Pinia已被内置,无需额外安装即可直接使用(Vue2版本则内置了Vuex)。 HBuilder X项目:直接使用,无需安装。CLI项目:需手动安装,执行yarn add pinia…

<网络> 协议

目录 文章目录 一、认识协议 1. 协议概念 2. 结构化数据传输 3. 序列化和反序列化 二、网络计算器 1. 封装socket类 2. 协议定制 request类的序列化和反序列化 response类的序列化和反序列化 报头的添加与去除 Json序列化工具 Jsoncpp 的主要特点: Jsoncpp 的使用方法: 3. Ser…

群控系统服务端开发模式-应用开发-文件上传功能开发

一、文件上传路由 在根目录下route文件夹中app.php文件中,添加文件上传功能路由,代码如下: Route::post(upload/file,common.Upload/file);// 上传文件接口 二、功能代码开发 在根目录下app文件夹下common文件夹中创建上传控制器并命名为Up…

sklearn 安装使用笔记

目录 安装: sklearn 安装: pip install scikit-learn pip install scikit-image from skimage.metrics import structural_similarityimport sklearn

pycharm小游戏贪吃蛇及pygame模块学习()

由于代码量大,会逐渐发布 一.pycharm学习 在PyCharm中使用Pygame插入音乐和图片时,有以下这些注意事项: 插入音乐: - 文件格式支持:Pygame常用的音乐格式如MP3、OGG等,但MP3可能需额外安装库&#xf…

检索增强和知识冲突学习笔记

检索增强生成任务(Retrieval-Augmented Generation, RAG)是一种自然语言处理技术,它结合了信息检索和生成模型,用于生成高质量的文本输出。具体来说,RAG 模型在生成文本时,会先通过检索模块从外部知识库或文…

从0开始深度学习(25)——多输入多输出通道

之前我们都只研究了一个通道的情况(二值图、灰度图),但实际情况中很多是彩色图像,即有标准的RGB三通道图片,本节将更深入地研究具有多输入和多输出通道的卷积核。 1 多输入通道 当输入包含多个通道时,需要…

网管平台(进阶篇):如何正确的管理网络设备?

网络设备作为构建计算机网络的重要基石,扮演着数据传输、连接和管理的关键角色。从交换机、路由器到防火墙、网关,各类网络设备共同协作,形成了高效、稳定的网络系统。本文将详细介绍网络设备的种类,并探讨如何正确管理这些设备&a…

5G NR 信道

简介   在UE和5G基站之间的空中接口上,5G New Radio在各种物理通道上承载信息。这些通道同时承载用户平面(UP)或控制平面(CP)信息。   但是,5G NR协议栈有许多层,每一层都以不同的抽象级别与…

Flink的流、批处理

Flink的数据流处理,是持续流模型,数据不会落地,上游和下游的Task同时启动,等待数据的到达,Flink的批处理还是用的MapReduce计算模型,先处理map端,再执行reduce端。 flink的流处理(STREAMING)&a…

交安安全员考试真题及答案

交安安全员考试真题及答案 34.根据《企业安全生产费用提取和使用管理办法》,下列费用中,不属于安全生产费用支出范围的是()。 A.配备应急器材费用 B.操作器械竞赛费用 C.安全标准化建设费用 D.重大事故隐患整改费用 答案&am…

论文 | Teaching Algorithmic Reasoning via In-context Learning

这篇论文《通过上下文学习教授算法推理》探讨了如何通过上下文学习(In-context Learning, ICL)有效训练大型语言模型(LLMs)以进行算法推理。以下是从多个角度对这项工作的详细解读: 1. 问题陈述与研究动机 算法推理的…

RK3568平台(基础篇)性能分析工具

一.Linux 性能优化工具简介 Linux 系统性能指标无非就是这几个方面,CPU、内存、磁盘 I/O、文件系统、网络等相关指标。不同的性能指标都有对应的具体命令工具进行查看与监控,接下来我们将介绍一些常见的 Linux 系统性能指标及其对应的命令工具(通过命令工具找出 Linux 系统性…