day23-113. 路径总和ii

113. 路径总和ii

力扣题目链接(opens new window)

给定一个二叉树和一个目标和,找到所有从根节点到叶子节点路径总和等于给定目标和的路径。

说明: 叶子节点是指没有子节点的节点。

示例: 给定如下二叉树,以及目标和 sum = 22,

113.路径总和ii1.png

思路

利用前序遍历,我们可以使用类型回溯的技巧: sum - root->val,像这样传递参数,返回后数值不变。

代码如下:

/*** Definition for a binary tree node.* struct TreeNode {*     int val;*     TreeNode *left;*     TreeNode *right;*     TreeNode() : val(0), left(nullptr), right(nullptr) {}*     TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}*     TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {}* };*/
class Solution {
private:vector<vector<int>> res;vector<int> curPath;
public:vector<vector<int>> pathSum(TreeNode* root, int targetSum) {res.clear();curPath.clear();if(!root)return  res;curPath.push_back(root->val);getPath(root,targetSum-root->val);return res;}void getPath(TreeNode* root, int curSum){if(!root->left && !root->right && curSum == 0){ // 叶子结点且差为0res.push_back(curPath);return;}if(!root->left && !root->right)return;if(root->left){ // 空结点不进curPath.push_back(root->left->val);getPath(root->left,curSum-root->left->val); // 回溯curPath.pop_back();}if(root->right){curPath.push_back(root->right->val);getPath(root->right,curSum-root->right->val);curPath.pop_back();}return;}
};

curPath.pop_back();
}
return;
}
};


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

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

相关文章

机器学习(十八):Bagging和随机森林

全文共10000余字&#xff0c;预计阅读时间约30~40分钟 | 满满干货(附数据及代码)&#xff0c;建议收藏&#xff01; 本文目标&#xff1a;理解什么是集成学习&#xff0c;明确Bagging算法的过程&#xff0c;熟悉随机森林算法的原理及其在Sklearn中的各参数定义和使用方法 代码…

elasticsearch 查看所有集群设置_cluster/settings

curl --location http://127.0.0.1:9200/_cluster/settings?include_defaultstrue \ --header Authorization: Basic ssss样例数据 {"persistent": {"cluster": {"routing": {"allocation": {"node_concurrent_recoveries"…

【Spring】Spring中的设计模式

文章目录 责任链模式工厂模式适配器模式代理模式模版方法观察者模式构造器模式 责任链模式 Spring中的Aop的通知调用会使用责任链模式责任链模式介绍 角色&#xff1a;抽象处理者&#xff08;Handler&#xff09;具体处理者&#xff08;ConcreteHandler1&#xff09;客户类角…

14.3.4 【Linux】使用 LVM thin Volume 让 LVM 动态自动调整磁盘使用率

想像一个情况&#xff0c;你有个目录未来会使用到大约 5T 的容量&#xff0c;但是目前你的磁盘仅有 3T&#xff0c;问题是&#xff0c;接下来的两个月你的系统都还不会超过 3T 的容量&#xff0c; 不过你想要让用户知道&#xff0c;就是他最多有 5T 可以使用就是了&#xff01;…

Docker+rancher部署SkyWalking8.5并应用在springboot服务中

1.Skywalking介绍 Skywalking是一个国产的开源框架&#xff0c;2015年有吴晟个人开源&#xff0c;2017年加入Apache孵化器&#xff0c;国人开源的产品&#xff0c;主要开发人员来自于华为&#xff0c;2019年4月17日Apache董事会批准SkyWalking成为顶级项目&#xff0c;支持Jav…

Stable Diffusion - 俯视 (from below) 拍摄的人物图像 LoRA 与配置

欢迎关注我的CSDN&#xff1a;https://spike.blog.csdn.net/ 本文地址&#xff1a;https://spike.blog.csdn.net/article/details/132192139 图像来自 哥特风格 LoRA 俯视 LoRA&#xff0c;提升视觉冲击力&#xff0c;核心配置 <lora:view_from_below:0.6>,(from below,…

工程管理系统简介 工程管理系统源码 java工程管理系统 工程管理系统功能设计em

工程项目管理软件&#xff08;工程项目管理系统&#xff09;对建设工程项目管理组织建设、项目策划决策、规划设计、施工建设到竣工交付、总结评估、运维运营&#xff0c;全过程、全方位的对项目进行综合管理 工程项目各模块及其功能点清单 一、系统管理 1、数据字典&#xff…

什么是进程、线程、协程

什么是进程&#xff1f; 我们都知道计算机的核心是CPU&#xff0c;它承担了所有的计算任务&#xff1b;而操作系统是计算机的管理者&#xff0c;它负责任务的调度、资源的分配和管理&#xff0c;统领整个计算机硬件&#xff1b;应用程序则是具有某种功能的程序&#xff0c;程序…

github上有哪些值得读源码的react项目?

前言 下面是我整理的关于值得一读源码的react项目&#xff0c;希望对你有所帮助~ 1、 calcom Star: 21.6k calcom是一个开源的计算器应用程序。它提供了基本的数学运算功能&#xff0c;例如加法、减法、乘法和除法&#xff0c;还支持 科学计算、进制转换和单位转换等高级功能…

IP首部校验和字段计算方法

IP首部有16bit的校验和&#xff0c;因此&#xff0c;IP首部以16bit为单位计算校验和&#xff0c;IP首部的长度一定是16bit的整倍数&#xff0c;这是由于首部长字段的单位是32bit&#xff0c;首部长度不足32bit的整数倍时&#xff0c;会在尾部补0到32bit的整数倍。 发送方计算方…

【linux-keepalive】keepalive避免单点故障,高可用配置

keepalive: [rootproxy ~]# yum install -y keepalived [rootproxy ~]# vim /etc/keepalived/keepalived.conf global_defs {router_id proxy1 //设置路由ID号vrrp_iptables //不添加任何防火墙规则 } vrrp_instance V…

【点云分割】常用数据集介绍—— ShapeNet数据集

文章目录 一、简介二、数据集版本三、目录四、应用与用途五、其他数据集链接 一、简介 ShapeNet 是一个广泛使用的三维形状理解和分析的数据集&#xff0c;用于学术研究和计算机视觉任务。它是一个大规模的、多类别的三维模型数据库&#xff0c;包含了大量的三维模型。&#x…

【等保测评】云计算Linux服务器(一)

【等保测评】云计算&Linux服务器&#xff08;一&#xff09; 前言1、身份鉴别实例1实例2实例3实例4 2、访问控制实例1实例2实例3实例4实例5实例6实例7 前言 Linux是指UNIX克隆或类UNIX风格的操作系统&#xff0c;在源代码级别兼容绝大部分UNIX标准(IEEE POSIX, System V, …

接缝雕刻算法的 C++ 实现 - 算法概述与基本原理

第一部分:接缝雕刻算法的 C++ 实现 - 算法概述与基本原理 接缝雕刻(Seam Carving)是一种用于图像大小调整的算法,其目标是在不扭曲图像的“重要”部分的情况下调整图像大小。这种算法的主要优点是,它可以保持图像的视觉完整性,同时改变图像的尺寸。这与传统的图像缩放方…

c语言每日一练(4)

五道选择题 1、有以下代码&#xff0c;程序的输出结果是( ) #include <stdio.h> int main() {int a 0, b 0;for (a 1, b 1; a < 100; a){if (b > 20) break;//1if (b % 3 1)//2{b b 3;continue;}b b-5;//3}printf("%d\n", a);return 0; } A.1…

Vue原理解析:Vue到底是什么?

Vue.js是一种流行的JavaScript框架&#xff0c;用于构建用户界面。它采用了MVVM&#xff08;Model-View-ViewModel&#xff09;架构模式&#xff0c;旨在简化Web应用程序的开发过程。Vue具有响应式的数据绑定和组件化的特性&#xff0c;使得开发者能够以声明式的方式构建可复用…

vue3中监听,组件通信如父子传值、Vuex、Event Bus的使用

目录 一、监听 二、父子传值&#xff1a; 1、父传子&#xff1a; 2、子传父 三、全局状态管理&#xff08;Vuex&#xff09;&#xff1a; 四、事件总线&#xff08;Event Bus&#xff09;&#xff1a; 一、监听 <template><div><p>Count: {{ count }}…

【ARM Cache 系列文章 8 -- ARM DynamIQ 技术介绍

文章目录 DynamIQ 技术背景DynamIQ技术详解DynamIQ 与 big.LITTLEDynamIQ cluster 分类硬件支持 DynamIQ为什么适合人工智能&#xff1f; DynamIQ 技术背景 2017年3月21日下午&#xff0c;ARM在北京金隅喜来登酒店召开发布会&#xff0c;正式发布了全新的有针对人工智能及机器…

pyspark笔记 筛选条件 vs intersect

一个是filter提供条件时&#xff0c;条件的交集&#xff0c;一个是两个pyspark DataFrame 取交集 前者会有重复的行&#xff0c;后者则没有 举例说明&#xff0c;假设我们有如下的pyspark DataFrame d[[-1],[1],[1],[2],[3],[4]] dfspark.createDataFrame(d,[id]) df.show()-…

算法练习--数值相关

文章目录 整型数组合并质数因子 整型数组合并 将两个整型数组按照升序合并&#xff0c;并且过滤掉重复数组元素。 输出时相邻两数之间没有空格。 输入描述&#xff1a; 1 输入第一个数组的个数 2 输入第一个数组的所有数值 3 输入第二个数组的个数 4 输入第二个数组的所有数值…