【LeetCode75】第三十六题 路径总和3

news2025/1/19 20:55:53

目录

题目:

示例:

分析:

代码:


题目:

示例:

分析:

题目给我们一棵树,每个节点都有一个值,我们需要找出一条路径,这条路径上所有节点的值的和等于一个目标值,问我们能找出几条这样的路径。需要注意的是,路径的开头不必是根节点,路径的结尾不必的叶子节点。

那我们先降低要求,我们只找从根节点到叶子节点的路径中,有没有路径总和为目标值的路径,如果是这样,我们只需要在遍历二叉树的时候携带一个参数,这个参数是沿途节点的总和,然后我们遇到空指针(叶子结点的子树)的时候我们比较一下这个参数和目标值,如果一样的话是不是就有这样一条从根节点到叶子节点的路径总和为目标值。

我们再把要求升一点回来,我们找从根节点到任意节点的路径中,路径总和为目标值的路径。跟刚刚相比,不一样的是末尾节点从叶子节点变成了任意节点,那么我们只需要将刚刚比较参数和目标值的时机从遇到空指针变成了遍历到每个节点我们都要比较一下,这样就可以得到从根节点开始的路径路径总和为目标值的路径数了。

这时候我们再看题目的要求,是从任意节点开始到任意节点结束的路径总和等于目标值的路径数。

跟刚刚相比就是少了一个初始节点的条件限制,现在是初始节点不必是根节点,那么我们只需要在刚刚的遍历中我们再多套一层遍历,再每次遍历到一个新节点的时候,我们就当它是根节点,然后以这个“根节点”开始寻找到任意节点结束,然后路径总和等于目标值的路径数量了。

代码:

class Solution {
public:
    int res=0;
    void digui(TreeNode* root,int target,long temp){
        if(root==nullptr) return;
        temp+=root->val;    //在临时变量中加上 当前节点的值
        if(temp==target) res++; //做个判断,如果临时变量等于目标值了,那么答案加一
        digui(root->left,target,temp);  //接着遍历左子树
        digui(root->right,target,temp); //接着遍历右子树
    } 
    int pathSum(TreeNode* root, int targetSum) {
        if(root==nullptr) return 0; 
        digui(root,targetSum,0);    //以当前节点为起始节点,开始寻找满足条件的路径总和
        pathSum(root->left,targetSum);  //递归遍历左子树,在这次递归中,当前节点的左子树节点将会作为起始节点开始新的递归遍历
        pathSum(root->right,targetSum); //递归遍历右子树
        return res;
    }
};

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

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

相关文章

解决华为云ping不通的问题

进入华为云控制台。依次选择:云服务器->点击服务器id->安全组->更改安全组->添加入方向规则,添加一个安全组规则(ICMP),详见下图 再次ping公网ip就可以ping通了 产生这一问题的原因是ping的协议基于ICMP协…

缺少代码签名证书会怎么样?

在当下恶意软件攻击频发的情形下,使用代码签名证书来保护代码安全已经成为每个软件开发商的基本认知。代码签名证书将保护软件代码的完整性,避免软件被非法篡改或植入恶意代码病毒,从而使得软件可以正常运行。那么如果软件缺少代码签名证书会…

栈和队列OJ题

有效括号问题: 题目描述: 给定一个只包括 (,),{,},[,] 的字符串 s ,判断字符串是否有效。 有效字符串需满足: 左括号必须用相同类型的右括号闭合。左括号必须以正确的…

R语言之 dplyr 包

文章和代码已经归档至【Github仓库:https://github.com/timerring/dive-into-AI 】或者公众号【AIShareLab】回复 R语言 也可获取。 文章目录 1.使用 filter( ) 和 slice( ) 筛选行2.使用 arrange( ) 排列行3. 使用 select( ) 选择列4.使用 mutate( ) 添加新变量5.使…

FMCW雷达基于时分复用波形(TDMA) 3D点云获取方法的仿真

摘要:通过设置时分复用(TDMA)波形结合FMCW毫米波雷达仿真获取目标的距离、速度和方位角3D点云信息。在本案例中,首先通过发射天线交替发射FMCW波形并通过接收天线依次接收回波信号从而得到雷达原始数据,其次对获取的原始数据依次经行距离、速…

电脑怎么把视频转换gif动图?视频生成gif的操作步骤

如果你也想把一些精彩的视频转gif图片(https://www.gif.cn)的话,今天的文章你可千万不要错过,利用专业的视频转gif工具,轻松在线视频转gif,操作简单又方便,支持电脑、手机双端操作,赶…

金蝶云星空和管易云接口打通对接实战

金蝶云星空和管易云接口打通对接实战 对接系统金蝶云星空 金蝶K/3Cloud在总结百万家客户管理最佳实践的基础上,提供了标准的管理模式;通过标准的业务架构:多会计准则、多币别、多地点、多组织、多税制应用框架等,有效支持企业的运…

静电中和风机在所具有的的优点

半导体生产过程中,静电积聚和离子污染是常见的问题,会对产品质量和工艺稳定性造成负面影响。为了解决这个问题,可以采用专门用于半导体自动化的静电消除/中和离子风机。 静电消除/中和离子风机是一种集静电消除和离子中和功能于一体的装置。…

Arnold置乱

一、Arnold置乱概述 Arnold变换是俄国数学家弗拉基米尔阿诺德(Vladimir Igorevich Arnold)提出,Arnold将其应用在遍历理论研究中。由于Arnold本人最初对一张猫的图片进行了此种变换,因此它又被称为猫脸变换(cat映射&am…

24 | 紧跟时代步伐:微服务模式下API测试要怎么做?

微服务架构(Microservice Architecture) 微服务是一种架构风格。在微服务架构下,一个大型复杂软件系统不再由一个单体组成,而是由一系列相互独立的微服务组成。其中,各个微服务运行在自己的进程中,开发和部…

【pdf密码】PDF文件,无密码取消限制

PDF文件设置了限制编辑,会导致什么情况呢?比较常见的就是无法编辑、无法复制粘贴、无法打印或者打印文件清晰度差。这些都是PDF限制编辑导致的,想要编辑文件,我们就需要取消限制编辑,但是有些时候,大家可能…

静电中和设备在半导体自动化生产中起到了怎样的作用

静电中和设备在半导体自动化生产中起到了重要的作用。在半导体生产过程中,由于材料的摩擦、粉尘的飞扬、人员的移动等原因,会产生大量的静电电荷。这些静电电荷如果不得到有效的中和处理,会对生产过程和产品质量产生严重的影响。 静电中和设…

LPC1768运行threadx数组越界导致出现硬件错误死机问题的排查

移植了threadx后运行发现程序莫名跑飞,停留在 HardFaultHandler 即硬件错误异常 调试过程中发现在汇编启动文件启动后跳转main函数即刻就发生了错误异常,先排除是在操作系统运行过程中的问题,而且是硬件错误异常所以先对导致改错误的可能进行…

ENSP操作平台命令汇总一(第五课)

一 Ensp基础指令操作 1 ipconfig 查看 pc机的IP地址2 ping 连接的IP地址 3 system-view 进入系统视图4 [Huawei]interface GigabitEthernet 0/0/1 进入接口视图 过0/0/15 quit 返回上一层视图6 ctrlZ 快速返回用户视图7 [sy]sysname tedu-ntd-lswl 进入系统视…

Java --- 内部类

目录 一、什么是内部类 二、为什么需要内部类 三、内部类的分类 3.1、成员内部类 3.2、局部内部类 四、练习 一、什么是内部类 将一个类A定义在另一个类B里面,里面的那个类A就称为内部类(InnerClass),类B则称为外部类&#…

SQL 错误 [22007]: ERROR: invalid input syntax for type date: ““

0. 背景 PG数据库一张表有这样一个varchar类型的字段end_date,存储的值是格式化后的年月日日期如 2024-08-10 现在我需要根据当前日期与end_date的差值作为where条件过滤,我的写法 select …… from my_table_name where current_date - cast (end_date as date) >100报错…

苹果“迎难而上”,印度赚印度花,扩大产能,推动手机制造业发展

根据报道,苹果公司在由印度当地媒体 Business Today 报道的会议中表示,他们计划扩大在印度的生产产能。这也进一步显示了苹果对印度市场的重视程度。 据统计数据显示,印度已成为苹果第五大iPhone市场,其市场营收超越了法国和德国&…

React绑定antd输入框,点击清空或者确定按钮实现清空输入框内容

其实实现原理和vue的双向绑定是一样的,就是监听输入框的onChange事件,绑定value值,当输入框内容发生变化后,就重新设置这个value值。 示例代码:我这里是统一在handleCancel这个函数里面处理清空逻辑了,你们…

再写CentOS7升级OpenSSL-1.0.1U

本文在CentOS7.4以及TencentOS 2.4上测试通过。 原系统自带OpenSSL 1.0.2k-fips。 编译安装方法跟之前的没啥区别。 从官网下载1.0.1u版https://www.openssl.org/source/ 使用tar解包 tar xfz openssl-1.0.1u.tar.gz 依次执行如下: cd openssl-1.0.1u ./con…

pdf转ppt软件哪个好用?推荐一个好用的pdf转ppt软件

在日常工作和学习中,我们经常会遇到需要将PDF文件转换为PPT格式的情况。PDF格式的文件通常用于展示和保留文档的原始格式,而PPT格式则更适合用于演示和展示。为了满足这一需求,许多软件提供了PDF转PPT的功能,使我们能够方便地将PD…