LeetCode 路径总和

news2024/9/24 7:20:43

给你二叉树的根节点 root 和一个表示目标和的整数 targetSum 。判断该树中是否存在 根节点到叶子节点 的路径,这条路径上所有节点值相加等于目标和 targetSum 。如果存在,返回 true ;否则,返回 false 。

叶子节点 是指没有子节点的节点。

示例 1:

输入:root = [5,4,8,11,null,13,4,7,2,null,null,null,1], targetSum = 22
输出:true
解释:等于目标和的根节点到叶节点路径如上图所示。

来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/path-sum

112. 路径总和 - 力扣(LeetCode)icon-default.png?t=N176https://leetcode.cn/problems/path-sum/113. 路径总和 II - 力扣(LeetCode)icon-default.png?t=N176https://leetcode.cn/problems/path-sum-ii/思路: 

这两个题目类似,都是求从根节点到叶结点的“路径和”。只不过一个是判断是否存在路径和等于TargetSum的路径,另一个还有打印出这些路径。

考察的就是二叉树的遍历,

void dfs(节点 , 节点值1 ,节点值2 ){

    判断条件
    
    在遍历左子树前完成的操作; 
    遍历左子树 ; 
    遍历右子树 ; 
    
}

112 的代码 

class Solution {
public:
    // 寻找是否有一条 路径和的targetSum 
    // 一个巧妙的思路是
    // 遍历树 , 每次减去该节点的 val , 如果到叶子节点了, sum 正好等于了叶结点的vl
    // 说明存在

    bool hasPathSum(TreeNode* root, int targetSum) {
        if(root == nullptr) return false ; // 特判
        if(root->left == nullptr && root->right == nullptr) {
            return targetSum == root->val  ; 
        }

        if(root->left) {
            hasPathSum(root->left,targetSum-=root->val) ; 
        }
        if(root->right) {
            hasPathSum(root->right,targetSum-=root->val) ; 
        }
        return false ; 
    }
 
};

113的代码 

class Solution {

public:

    // 定义答案路径 
    vector<vector<int>> res ; 
    vector<vector<int>> pathSum(TreeNode* root, int targetSum) {
        vector<int> path  ;
        dfs(root,0, targetSum,path) ; 
        return res ; 
    }
    void dfs(TreeNode* root ,int sum,  int targetSum , vector<int>& path ) {
        // 终止条件
        if(root == nullptr )return ; 
        if( (root->left == nullptr) && (root->right== nullptr)) {
            path.push_back(root->val) ; 
            sum+=root->val ; 
            if(sum == targetSum) {
                res.push_back(path) ; 
            }
        
            return ; 
        }
        path.push_back(root->val) ; 
        sum+=root->val ; 
        if(root->left){
            dfs(root->left,sum,targetSum,path) ;
            path.pop_back() ;  
        }
        if(root->right) {
            dfs(root->right,sum , targetSum,path) ; 
            path.pop_back() ;
        }
        
        return ; 
    }


};


 

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

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

相关文章

oneblog_justauth_三方登录配置【Github】

文章目录oneblog添加第三方平台github中创建三方应用完善信息登录oneblog添加第三方平台 1.oneblog管理端&#xff0c;点击左侧菜单 网站管理——>社会化登录配置管理 ,添加一个社会化登录 2.编辑信息如下&#xff0c;选择github平台后复制redirectUri,然后去github获取cl…

Arduino添加ESP32开发板

【2023年3月4日】 最近要在新电脑上安装Arduino&#xff0c;需要进行一些配置&#xff0c;正好记录一下&#xff01; Arduino2.0.1 下的开发板添加操作。 ESP32开发板GitHub链接&#xff1a; GitHub - espressif/arduino-esp32: Arduino core for the ESP32Arduino core for…

ICASSP2023|达摩院语音实验室入选论文全况速览

近日&#xff0c;语音技术领域国际会议ICASSP公布了本届论文审稿结果&#xff0c;阿里巴巴达摩院语音实验室有14篇论文被大会收录。本次被接收的论文研究方向涵盖语音识别、语音唤醒、语音增强、说话人日志、语义理解、多模态预训练等。 01 TOLD: A Novel Two-Stage Overlap-…

实验楼项目

创建虚拟环境命令&#xff1a;python -m venv venv 项目整体分为六个个模块&#xff1a;用户信息相关模块、机构相关模块、课程相关模块、用户操作相关模块&#xff0c;评论区模块 搜索模块。 # 项目功能概括&#xff1a; 1、首先具有完整的用户登录&#xff0c;邮箱注册以及…

JDBC的实现(IDEA版)

前期准备 开发环境&#xff1a; IDEA 2021.1.3 JAVA 1.8 MYSQL 8.0.32 msql用户名:root 密码&#xff1a;123 下载MySQL JDBC 驱动 前往MySQL官网下载对应版本的MySQL Connector/J驱动 &#xff08;下载地址&#xff1a;https://dev.mysql.com/downloads/connector/j/&#xff…

基于rootfs构建Docker镜像

1. 背景 在实际工作中&#xff0c;由于系统本身版本过低&#xff0c;在接受新项目时出现系统版本过低而无法开始工作的问题。 为了解决该问题&#xff0c;使用Docker构建基于ubuntu-18.04的Docker镜像&#xff0c;以解决版本兼容问题。 2. 构建rootfs 2.1. 下载ubuntu-18.0…

HCIA复习1

HCIA复习 抽象语言---->编码 编码---->二进制 二进制--->电信号 处理电信号 OSI参考模型----OSI/RM 应用层 表示层 会话层 传输层 端口号&#xff1a;0-65535&#xff1b;1-1023是注明端口 网络层 IP地址 数据链路层 物理层 ARP协议 正向ARP---通过IP地址获取目的MAC地…

云服务器Ubuntu(无桌面)安装远程桌面

如果主机上安装的ubuntu是桌面版&#xff0c;打开桌面共享即可使用Windows的远程桌面进行链接。详细参考ubuntu20.10中设置桌面共享的三种方式(任选其一) 的第一部分。 本文主要说明如何在Ubuntu云服务器上安装远程桌面。 一、安装桌面环境 在 Ubuntu 源仓库有很多桌面环境供…

路由协议(OSPF、ISIS、BGP)实验配置

目录 OSPF基础实验 建立OSPF邻居 配置虚连接 配置接口的网络类型 配置特殊区域 配置路由选路 配置路由过滤 ISIS基础实验配置 配置ISIS邻居建立 配置认证 配置路由扩散 配置路由过滤 配置定时器 BGP基础实验配置 建立BGP对等体 建立IBGP对等体 建立EBGP对等体…

自动驾驶规划控制软硬一体化控制器解决方案(一)

随着社会的进步&#xff0c;汽车工业和电子科技发展迅速&#xff0c;车载电子器件的数量越来越多&#xff0c;汽车 电子的平台集成度越来越高&#xff0c;两者的融合正在革新着人们的驾乘体验。本文基于 x86 SoC 进 行系统设计&#xff0c;实现高效的汽车智能驾驶舱技术和高级驾…

ASGARD:单细胞导向的药物发现

异质性&#xff0c;或更具体地说&#xff0c;病变组织中的不同的细胞群&#xff0c;是许多复杂疾病治疗失败的主要原因&#xff08;如癌症、阿尔茨海默症、中风和COVID-19等&#xff09;&#xff0c;也是精准医疗成功的主要障碍。近年来&#xff0c;单细胞技术&#xff0c;特别…

【项目精选】基于Java的模拟写字板的设计与实现(视频+论文+源码)

点击下载源码 此系统是使用Java语言实现简易写字板程序&#xff0c;能够进行输入文字操作&#xff0c;并具有新建文件&#xff0c;打开文件&#xff0c;保存文件&#xff0c;退出&#xff0c;复制&#xff0c;粘贴&#xff0c;剪切&#xff0c;全选&#xff0c;撤销等多种基本…

电子技术——晶体管尺寸

电子技术——晶体管尺寸 在本节我们介绍关于IC设计的一个重要的参数晶体管尺寸&#xff08;例如长度和长宽比&#xff09;。我们首先考虑MOS反相器。 反相器尺寸 为了说明 (W/L)(W/L)(W/L) 的尺寸大小以及 (W/L)p(W/L)_p(W/L)p​ 和 (W/L)n(W/L)_n(W/L)n​ 的比例问题对于MO…

CENTO OS上的网络安全工具(十八)ClickHouse及编程环境部署

这篇其实去年就写好了&#xff0c;孰知就在12月31日那一天打进决赛圈&#xff0c;一躺&#xff0c;二过年&#xff0c;三休假&#xff0c;四加班&#xff0c;居然到了三个月以后&#xff0c;才有机会将它发出来…… 一年也就四个季度不是&#xff0c;实在是光阴荏苒&#xff0c…

代码随想录|day6|哈希表篇-- 242.有效的字母异位词 、349. 两个数组的交集 、202. 快乐数、1. 两数之和

总链接https://docs.qq.com/doc/DUEtFSGdreWRuR2p4?u329948d2f0044f34b7cbe72503f0b572 242.有效的字母异位词 链接&#xff1a;代码随想录 class Solution { public:bool isAnagram(string s, string t) {//两种做法&#xff0c;一种是int f[26]的数组,一种是map /*第一种&a…

历史大讲堂:这是真·图形化 苹果系统历史回顾(上)

众所周知&#xff0c;米国有个非常牛掰的公司叫苹果&#xff0c;想必大家对这个logo不陌生吧。 目前已发布的苹果产品有iPhone、iPad、iPod等等&#xff0c;简直花样繁多&#xff0c;而且各种功能很好用&#xff0c;我的手机就是一部苹果iPhone X。 等一下&#xff0c;似乎扯远…

14个Python处理Excel的常用操作,非常好用

自从学了Python后就逼迫用Python来处理Excel&#xff0c;所有操作用Python实现。目的是巩固Python&#xff0c;与增强数据处理能力。 这也是我写这篇文章的初衷。废话不说了&#xff0c;直接进入正题。 数据是网上找到的销售数据&#xff0c;长这样&#xff1a; 一、关联公式:…

第十四届蓝桥杯第三期模拟赛 【python】

第十四届蓝桥杯第三期模拟赛 【python】 文章目录第十四届蓝桥杯第三期模拟赛 【python】✨最小的十六进制&#xff08;python的16进制&#xff09;❓️问题描述答案提交&#x1f9e0;思路&#x1f5a5;︎参考答案✨Excel的列&#xff08;进制转化&#xff09;❓️问题描述答案…

Java学习笔记 --- Tomcat

一、JavaWeb 的概念 JavaWeb 是指&#xff0c;所有通过 Java 语言编写可以通过浏览器访问的程序的总称&#xff0c;叫 JavaWeb。 JavaWeb是基于请求和响应来开发的。请求是指客户端给服务器发送数据&#xff0c;叫请求 Request。 响应是指服务器给客户端回传数据&#xff0c;叫…

【Pytorch】AutoGrad个人理解

前提知识&#xff1a;[Pytorch] 前向传播和反向传播示例_友人小A的博客-CSDN博客 目录 简介 叶子节点 Tensor AutoGrad Functions 简介 torch.autograd是PyTorch的自动微分引擎&#xff08;自动求导&#xff09;&#xff0c;为神经网络训练提供动力。torch.autograd需要对…