【leetcode】面试题 04.12. 求和路径(dfs)

prplOS组件流程梳理 本文梳理了prplOS系统中设备信息管理模块(deviceinfo-manager)的工作流程。该模块启动时通过/etc/init.d/deviceinfo-manager调用核心框架amxrt执行,主要功能包括收集设备信息、管理数据模型、初始化子系统等。系统采用ODL文件定义数据模型,通过解析器将配置文件转换为内存中的对象树。流程涉及命令行参数解析、ODL文件加载、后端模块扫描等核心步骤,最终构建出完整的数据模型供上层应用访问。整个架构体现了模块化设计思想,通过动态加载插件实现功能扩展。 阅读详情

题目

在这里插入图片描述 题目链接:面试题 04.12. 求和路径

解题思路

  • 将所求的路径数ans定义为实例变量,并初始化为0。实例变量:独立于方法之外的变量,不过没有static修饰。区别于类变量(独立于方法之外的变量,用static修饰,也叫静态变量)和局部变量(类方法中的变量)。
  • dfs函数从某一结点出发统计以此结点为起始位置的结点数值的总和,当总和等于sum时,ans++。直到当前结点为空时函数返回。
  • pathSum函数返回答案ans,此函数思想也是深度优先搜索主要用于遍历二叉树的结点,同时对遍历到的结点dfs。所以此题有点“双重dfs”的意思。

AC代码:

/**
 * Definition for a binary tree node.
 * public class TreeNode {
 *     int val;
 *     TreeNode left;
 *     TreeNode right;
 *     TreeNode(int x) { val = x; }
 * }
 */
class Solution {
    int ans=0; 
    public void dfs(TreeNode root,int S,int sum){
    if(root==null) return; / /遍历到底的时候就返回 
    if(S+root.val==sum) ans++; / /当前路径总和为sum,ans++
    dfs(root.left,S+root.val,sum); / /往左儿子延展一条路径
    dfs(root.right,S+root.val,sum);  / /往右儿子延展一条路径
    }
    public int pathSum(TreeNode root, int sum) {
    if(root==null) return 0; 
    dfs(root,0,sum); / /从当前结点搜索路径,dfs过程中更新ans
    pathSum(root.left,sum); / /遍历左子树
    pathSum(root.right,sum); // 遍历右子树
    return ans; 
    }
   
}

本题避坑提醒

  • 需要注意的是:结点数值可正可负,所以dfs函数的递归返回条件是当前结点为空(即将每条路径走到底),而不是当前路径数值总和为sum。(若当前路径数值总和为sum,原当前路径走下去也可能会满足“当前路径数值总和为sum”,所以每条路径要走到底)。
  • 先上一份忽略结点数值可正可负导致错误的代码:
/ /114个样例仅通过108个的错误代码:
/**
 * Definition for a binary tree node.
 * public class TreeNode {
 *     int val;
 *     TreeNode left;
 *     TreeNode right;
 *     TreeNode(int x) { val = x; }
 * }
 */
class Solution {
    public int dfs(TreeNode root,int S,int sum){
    if(root==null) return 0;  
    if(S+root.val==sum) return 1;
    return dfs(root.left,root.val+S,sum)+dfs(root.right,S+root.val,sum); 
    }
    public int pathSum(TreeNode root, int sum) {
    if(root==null) return 0;  
    int ans=0;
    ans+=dfs(root,0,sum);
    ans+=pathSum(root.left,sum)+pathSum(root.right,sum);
    return ans; 
    
    }
}
  • 没有通过的一个样例:
    在这里插入图片描述
  • 路径1-> -2 和路径1-> -2 ->1->-1的sum都为-1,所以不能在遍历了路径路径1-> -2 时返回。

上一篇博客:leetcode 200.岛屿数量(dfs)

YOLO26涨点改进 | 全网独家创新,注意力改进篇| SCI一区Top | 引入AFCA自适应细粒度通道注意力,联合建模全局与局部通道依赖关系,适合目标检测、图像去雾、关键点检测、图像分类、图像分割 🔥本文提出了一种基于AFCA(自适应细粒度通道注意力)模块改进的YOLO26目标检测网络。AFCA通过联合建模全局与局部通道依赖关系,实现了更精细的通道注意力分配,能够增强目标相关特征并抑制背景噪声。该模块采用自适应融合策略动态平衡通道权重,在保持轻量级结构的同时,显著提升了小目标和复杂背景下的检测性能。文章详细介绍了AFCA的结构原理、实现优势,并提供了完整的代码实现和YAML配置文件,指导读者如何将该模块集成到YOLO26框架中。实验结果表明,AFCA在检测精度和鲁棒性方面优于传统注意力机制。 阅读详情

相关推荐

安装部署 Guacamole 远程桌面网关

Guacamole 是Apache基金会提供的一组基于web的远程桌面访问工具,支持 VNC、RDP、SSH、 Telnet 等协议,支持远程透传音视频。

UsamaBinLaden6976498的专栏 1963

【面试题 04.12】 求和路径

题目 题目链接 给定一棵二叉树,其中每个节点都含有一个整数数值(该值或正或负)。设计一个算法,打印节点数值总和等于某个给定值的所有路径的数量。注意,路径不一定非得从二叉树的根节点或叶节点开始或结束,但是其方向必须向下(只能从父节点指向子节点方向)。 示例: 给定如下二叉树,以及目标和 sum = 22, 5 / \ 4 8 / / \ 11 13 4 / \

WormholeStack 1606

skywalking各项指标说明

skywalking各项指标说明

没有简介 2487

程序员面试金典 --- 4.12求和路径

目录题目:求和路径一、思路二、解法1.蛮力法2.优化解法1 题目:求和路径 给定一棵二叉树,其中每个节点都含有一个整数数量(该值或正或负)。设计一个算法,打印节点数值总和等于某个给定值的所有路径(求路径数量!)。注意,路径不一定非得从二叉树得根节点或叶节点开始或结束,但是某方向必须向下(只能从父节点指向子节点方向)。 一、思路 1.先用蛮力法解决,只需要查看所有可能得路径。遍历每个节点,用递归法尝试所有向下的路径。并随着递归的进行跟踪路径的和。每当发现路径和等于目标和,答案就+1;用时O(NlogN) 每

weixin_44123098的博客 460

RISC-V— 架构基础知识学习

蜂鸟 E200 系列是一个开源的RISC-V 处理器。蜂鸟 E200 系列由中国大陆研发团队开发,用户能够轻松与开发人员取得交流和支持。RI蜂鸟 E200 处理器研发团队拥有在国际一流公司多年开发处理器的经验,使用稳健的Verilog 2001 语法编写的可综合 RTL 代码,以工业级标准进行开发。蜂鸟 E200 的代码为人工编写,添加丰富的注释且可读性强,非常易于理解。

deilt 1万+

STM32CubeIDE中文注释变乱码终极解决方案:3步设置永久解决锟斤拷问题!

你是否在STM32CubeIDE中遇到过这样的崩溃场景?——精心编写的中文注释在重新生成代码后变成“锟斤拷”乱码,不仅影响代码可读性,反复修改更是浪费大量时间!作为STM32开发者,我曾被这个问题困扰许久,试过修改软件设置、工程编码却始终治标不治本。直到发现这个基于Java环境变量的终极解决方案,才彻底解决了中文乱码难题。

smart_boy__的博客 2958

面试题 04.12. 求和路径

面试题 04.12. 求和路径 给定一棵二叉树,其中每个节点都含有一个整数数值(该值或正或负)。设计一个算法,打印节点数值总和等于某个给定值的所有路径的数量。注意,路径不一定非得从二叉树的根节点或叶节点开始或结束,但是其方向必须向下(只能从父节点指向子节点方向)。 示例: 给定如下二叉树,以及目标和 sum = 22, 5 / \ 4 8 / / \ 11 13 4

Tzecto 322

基于opencv-ANN的水果识别模型训练

本文通过opencv-ann-mlp训练模型,实现对五种水果进行分类识别。本文详细介绍该项目的各个过程,包括数据准备、预处理、样本读取、训练数据集制作、训练标签制作、模型参数设置、模型训练,模型测试验证等,总结该过程需要注意的事项。

qq_15985873的博客 3973

112. 路径总和详解!!三种解法,总有一款适合你(Java)

没想到112. 路径总和居然有3种解法?看看有哪些你不知道的。代码随想录第18天打卡:513.找树左下角的值、112. 路径总和、从中序与后序遍历序列构造二叉树。

rememberE0065的博客 1308

PX4飞控CAN总线通信深度配置:从menuconfig到驱动加载的完整指南

本文详细解析了PX4飞控中CAN总线通信的深度配置流程,从menuconfig选项设置到驱动加载的完整指南。涵盖硬件抽象层、驱动层和应用层的配置细节,提供实际验证方法和故障排查技巧,帮助开发者高效实现CAN通信,特别适用于无人机和机器人底盘运动控制等场景。

weixin_30374009的博客 501

OpenStack 2018 年终盘点

目录 文章目录目录前言OpenStack 一年来的成长NovaCinderNeutronIronicCyborgOctaviaKollaMagnumZunKuryr从 OpenStack 到 OpenInfra 前言 这是最好的时代,也是最坏的时代 — — 查尔斯·约翰·赫芬姆·狄更斯《双城记》 年关将至,闲暇之余,回顾我与 OpenStack 的 2018。 NOTE:仅作为个人见解,与公...

烟云的计算 3596

程序员面试金典 4.12 求和路径

很值得做的树形DP问题

昂昂累世士的博客 2005

物联网Node-Red开发教程-第6章 HTTP与Web服务

本章摘要(147字): 本章系统讲解了Node-RED中的HTTP节点应用,重点包括: 三大核心HTTP节点功能:http in(接收请求)、http response(返回响应)、http request(调用外部API) 详细演示了REST API开发流程,包括路径参数(req.params)处理和响应构造 提供了创建Hello World API、传感器数据接口等实用示例 涵盖HTTP方法特性、状态码设置及响应头配置等关键知识点 通过流程图和JSON配置直观展示节点连接方式,帮助快速掌握Web服务开发

shihui2003的博客 264

leetcode面试题 04.12. 求和路径(dfs)

给定一棵二叉树,其中每个节点都含有一个整数数值(该值或正或负)。设计一个算法,打印节点数值总和等于某个给定值的所有路径的数量。注意,路径不一定非得从二叉树的根节点或叶节点开始或结束,但是其方向必须向下(只能从父节点指向子节点方向)。 示例: 给定如下二叉树,以及目标和 sum = 22, 5 / \ 4 8 / / \ 11 13 4 / \ /

weixin_44560620的博客 213

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

【每日刷题】Day172

1. [蓝桥杯 202 省 AB3] 乘法表 2. 检查子树 3. 求和路径

2301_78022459的博客 827

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

《树》面试题 04.12. 求和路径《leetcode》

面试题 04.12. 求和路径 难度中等41 给定一棵二叉树,其中每个节点都含有一个整数数值(该值或正或负)。设计一个算法,打印节点数值总和等于某个给定值的所有路径的数量。注意,路径不一定非得从二叉树的根节点或叶节点开始或结束,但是其方向必须向下(只能从父节点指向子节点方向)。 示例: 给定如下二叉树,以及目标和sum = 22, 5 / \ 4 8 / / \ 11 .

Zyy~的博客 516

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

【算法&面试】DFS深度优先搜索,回溯套路

拿一道题 力扣面试题 04.09. 二叉搜索树序列 void backtracking(参数) { if (终止条件) { 存放结果; return; } for (选择:本层集合中元素) { 处理结点; backtracking(路径,选择列表)); // 递归 回溯,撤销处理结果; } } 力扣里面的图 下面的算法中,level是候选结点数组,path是当前路径。 package lik

tangxz的博客 225

LeetCode437 路径总和 III &《程序员面试金典》面试题 04.12. 求和路径

LeetCode 面试题 04.12. 求和路径题目解题解题一:蛮力法解题二:优化算法 题目 路径不一定非得从二叉树的根节点或叶节点开始或结束 但是其方向必须向下 (只能从父节点指向子节点方向) 且 路径是连续的 解题 解题一:蛮力法 在蛮力法中,我们只需查看所有可能的路径。为此,遍历每个节点,对于每个节点,用递归法尝试所有向下的路径,并随着递归的进行跟踪路径的和。每当得到目标和,将发现的路径数目加一。 // javascript var pathSum = function(root, sum) {

291

程序员面试金典——面试题 04.12. 求和路径

一、题目介绍 给定一棵二叉树,其中每个节点都含有一个整数数值(该值或正或负)。设计一个算法,打印节点数值总和等于某个给定值的所有路径的数量。注意,路径不一定非得从二叉树的根节点或叶节点开始或结束,但是其方向必须向下(只能从父节点指向子节点方向)。 示例: 给定如下二叉树,以及目标和sum = 22, 5 / \ 4 8 / / \ 11 13 4 / ...

Asher 351

力扣日常打卡---面试题04.12 求和路径

题目描述: 给定一棵二叉树,其中每个节点都含有一个整数数值(该值或正或负)。设计一个算法,打印节点数值总和等于某个给定值的所有路径的数量。注意,路径不一定非得从二叉树的根节点或叶节点开始或结束,但是其方向必须向下(只能从父节点指向子节点方向)。 示例: 思路及题解: 本题与面试题04.10很像,具体参见我的另一篇博客:检查子树 不同的是:本题需要遍历每一个节点以及对每一个节点进行dfs,所以时间复杂度为O(n^2),空间复杂度为O(1)。 代码及运行评价: /** * Definition for a

qq_27615887的博客 296

LeetCode[面试题04.12]求和路径

LeetCode[面试题04.12]求和路径 有讲解,有解题思路,有源码

月亮被咬碎成星星的博客 547

Leetcode 图_面试题 04.01. 节点间通路

Leetcode 图_面试题 04.01. 节点间通路 1、问题分析2、问题解决3、总结 1、问题分析 题目链接:https://leetcode-cn.com/problems/route-between-nodes-lcci/submissions/   本质上就是一个图的遍历问题,这里需要将原来的graph数组变成邻接表,接着遍历该邻接表,如果遍历到target节点即返回,同时设置已经遍历过的节点vis为true,表示已经访问过了。代码我已经进行了详细的注释,理解应该没有问题。 2、问题解决   笔者

珍惜 7718

力扣 面试题 04.12. 求和路径

题目 给定一棵二叉树,其中每个节点都含有一个整数数值(该值或正或负)。设计一个算法,打印节点数值总和等于某个给定值的所有路径的数量。注意,路径不一定非得从二叉树的根节点或叶节点开始或结束,但是其方向必须向下(只能从父节点指向子节点方向)。 示例 给定如下二叉树,以及目标和 sum = 22, 5 / \ 4 8 / / \ 11 13 4 / \ / \ 7 2 5 1 返回:

(ง •_•)ง没有困难的工作,只有勇敢的狗狗 209

Leetcode 面试题04.12 求和路径

解题思路:根据题意,可以想到递归用法,从根节点开始不断记录当前节点值之和,如果正好等于sum,就让表示路径数的count+1,否则遍历为空让其去别的路看看,实际上就是对深度优先遍历的利用,找到符合条件的路径即可,但是此题还说了不用特地从根节点出发到叶节点,所以我们还要分别讨论当前节点、当前节点左孩子、当前节点右孩子分别为起点时是否能找到满足题意的路径,所以其本身也是一个递归。和为 22 的路径有:[5,4,11,2], [5,8,4,5], [4,11,7]给定如下二叉树,以及目标和。

wanglitaozai的博客 147

爆刷leetcode——二叉树(二)——路径问题(一)

枚举每一条从根节点到叶子节点的路径,当遍历到叶子节点时,我们判断此时的路径和是否等于目标值,如果等于就将这个路径加入结果。递归结束需要回溯到上一个节点,判断父节点的另外一个孩子的路径是否满足条件。访问每一个节点root,检测从root节点从上到下中有多少条满足条件的路径。从某一个节点开始(不一定是根节点),从上到下开始寻找路径,直到某一个节点(不一定是叶子节点)结束,这个问题与第二个问题相比,从任意节点到另一任意节点的路径,不需要自定向下,该路径是可以。题目已经明确规定该路径必须是。

m0_64240499的博客 282

dfs 专题 (79单词搜索+112路径总和+113路径总和Ⅱ+面试题 求和路径 ) 注意加到sum的时机

leetcode 79. 单词搜索 class Solution { public: bool exist(vector<vector<char>>& board, string word) { rows = board.size(), columns = board[0].size(); for (int i = 0; i < rows; i++) { for (int j = 0; j < columns; j++) { if (ba

lardoris928的博客 113
上一篇: leetcode 200.岛屿数量(dfs)
下一篇: 【leetcode】62. 不同路径 & 63. 不同路径 II (dp入门)
准图灵奖得主
博客等级 码龄8年 355粉丝 135原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值