当前位置: 首页 > news >正文

【LeetCode】437.路径总和Ⅲ

题目

给定一个二叉树的根节点 root ,和一个整数 targetSum ,求该二叉树里节点值之和等于 targetSum 的 路径 的数目。

路径 不需要从根节点开始,也不需要在叶子节点结束,但是路径方向必须是向下的(只能从父节点到子节点)。

示例 1:

输入:root = [10,5,-3,3,2,null,11,3,-2,null,1], targetSum = 8
输出:3
解释:和等于 8 的路径有 3 条,如图所示。

示例 2:

输入:root = [5,4,8,11,null,13,4,7,2,null,null,5,1], targetSum = 22
输出:3

提示:

  • 二叉树的节点个数的范围是 [0,1000]
  • -109 <= Node.val <= 109 
  • -1000 <= targetSum <= 1000 

 

解答

源代码

/*** 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 int pathSum(TreeNode root, int targetSum) {Map<Long, Integer> preSum = new HashMap<>();preSum.put(0L, 1);return dfs(root, preSum, targetSum, 0);}public int dfs(TreeNode root, Map<Long, Integer> preSum, int targetSum, long cur) {if (root == null) {return 0;}// res表示以当前节点为根节点的二叉树的节点做路径末尾,有多少符合要求的路径int res = 0;cur += root.val;res += preSum.getOrDefault(cur - targetSum, 0);preSum.put(cur, preSum.getOrDefault(cur, 0) + 1);res += dfs(root.left, preSum, targetSum, cur);res += dfs(root.right, preSum, targetSum, cur);preSum.put(cur, preSum.get(cur) - 1);return res;}
}

总结

计算前缀和,二叉树中前缀和定义为当前节点一直到根节点的路径上所有节点之和,那么两节点的前缀和相减得到的结果便是两节点之间的路径和。

按照这个思路,我们对二叉树进行深度优先遍历,在遍历过程中将节点的前缀和存储起来。对于当前节点的前缀和cur,查询是否存在cur - targetSum前缀和。

相关文章:

【LeetCode】437.路径总和Ⅲ

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

Mybatis-plus中操作JSON字段

1.实体类上要加上自动映射 TableName(value "school", autoResultMap true)2.json字段上加上json处理器 TableField(value "cover_url", typeHandler JacksonTypeHandler.class)private List<String> cover_url;参考博客 http://www.dedeyun.co…...

第十五课、Windows 下打包发布 Qt 应用程序

功能描述&#xff1a;讲解了 Windows 下打包发布 Qt 应用程序的三种方法&#xff0c;并对比优缺点 一、利用 windepolyqt 工具打包发布 Qt 提供了一个 windeployqt 工具来自动创建可部署的文件夹。 打包发布流程&#xff1a; 1. 新建一个文件夹&#xff0c;将编译后的可执行…...

【php】windows下php运行已有php web项目环境配置教程

php环境配置教程 php安装composer安装扩展安装redis扩展安装 composer install 本文操作系统使用的是win11&#xff0c;软件PhpStorm 2023.1 php安装 要安装的php版本可以在composer.json看到&#xff0c;下载安装对应版本 windows下载地址https://windows.php.net/download …...

【mybatis】 mybatis在mysql 更新update 操作 更新时间字段按照年月日时分秒格式 更新为当前时间...

参考链接 【mybatis】 mybatis在mysql 更新update 操作 更新时间字段按照年月日时分秒格式 更新为当前时间…...

C++动态规划经典案例解析之合并石子

1. 前言 区间类型问题&#xff0c;指求一个数列中某一段区间的值&#xff0c;包括求和、最值等简单或复杂问题。此类问题也适用于动态规划思想。 如前缀和就是极简单的区间问题。如有如下数组&#xff1a; int nums[]{3,1,7,9,12,78,32,5,10,11,21,32,45,22}现给定区间信息[…...

go MongoDB

安装 go get go.mongodb.org/mongo-driver/mongo package mongodbexampleimport ("context""fmt""ginapi/structs""time""go.mongodb.org/mongo-driver/bson""go.mongodb.org/mongo-driver/bson/primitive""…...

算法与数据结构(八)--优先队列

普通的队列是一种先进先出的数据结构&#xff0c;元素在队列尾追加&#xff0c;而从队列头删除&#xff0c;在某些情况下&#xff0c;我们可能需要找出队列中的最大值或者最小值。 例如使用一个队列保存计算机的任务&#xff0c;一般情况下计算机的任务都是有优先级的&#xff…...

React 全栈体系(三)

第二章 React面向组件编程 四、组件三大核心属性3: refs与事件处理 1. 效果 需求: 自定义组件, 功能说明如下: 点击按钮, 提示第一个输入框中的值当第2个输入框失去焦点时, 提示这个输入框中的值 2. 理解 组件内的标签可以定义ref属性来标识自己 3. 编码 3.1 字符串形式…...

腾讯云下一代CDN -- EdgeOne加速MinIO对象存储

省流 使用MinIO作为EdgeOne的源站。 背景介绍 项目中需要一个兼容S3协议的对象存储服务&#xff0c;腾讯云的COS虽然也兼容S3协议&#xff0c;但是也只是支持简单的上传下载&#xff0c;对于上传的时候同时打标签这种需求&#xff0c;就不兼容S3了。所以决定自建一个对象存储…...

GitLab-CI 指南

GitLab CI 指南 前置工作 部署GitLab 部署GitLab-Runner 注册Runner到GitLab docker exec -it gitlab-runner bash # 进入容器 gitlab-runner register #调用register命令开始注册 # 在Gitlab Setting中找到Runners,如下图所示Enter the GitLab instance URL (for example, …...

MyBatis的核心技术掌握,简单易懂(上)

目录 一.MyBatis中的动态SQL 二.MyBatis中的模糊查询 1. # 符号 2. $ 符号 ---问题 ---所以大家知道 # 和 $ 在MyBatis中的模糊查询中的区别了嘛&#xff1f;&#xff1f; 三.MyBatis 中的结果映射 1. resultType&#xff1a; 2. resultMap&#xff1a; ---问题 ---…...

Redisson自定义序列化

Redisson自定义序列化_redisson 序列化_yzh_1346983557的博客-CSDN博客 redis存取的数据一定是可序列化的&#xff0c;而可序列化方式可以自定义。如果不同客户端设置的可序列化方式不一样&#xff0c;会导致读取不一致的问题。常见的序列化方式有几下几种...

MongoDB Long 类型 shell 查询

场景 1、某数据ID为Long类型&#xff0c;JAVA 定义实体类 Id Long id 2、查询数据库&#xff0c;此数据存在 3、使用 shell 查询&#xff0c;查不到数据 4、JAVA代码查询Query.query 不受任何影响 分析 尝试解决&#xff08;一&#xff09; long 在 mongo中为 int64 类型…...

回归预测 | MATLAB实现GA-APSO-IBP改进遗传-粒子群算法优化双层BP神经网络多输入单输出回归预测

回归预测 | MATLAB实现GA-APSO-IBP改进遗传-粒子群算法优化双层BP神经网络多输入单输出回归预测 目录 回归预测 | MATLAB实现GA-APSO-IBP改进遗传-粒子群算法优化双层BP神经网络多输入单输出回归预测效果一览基本介绍模型描述程序设计参考资料 效果一览 基本介绍 MATLAB实现GA-…...

Spring cache整合Redis使用介绍

&#x1f353; 简介&#xff1a;java系列技术分享(&#x1f449;持续更新中…&#x1f525;) &#x1f353; 初衷:一起学习、一起进步、坚持不懈 &#x1f353; 如果文章内容有误与您的想法不一致,欢迎大家在评论区指正&#x1f64f; &#x1f353; 希望这篇文章对你有所帮助,欢…...

Metasploit提权

一、bypassuac 用户账户控制&#xff08;User Account Control&#xff0c;简写作UAC)是微软公司在其Windows Vista及更高版本操作系统中采用的一种控制机制。其原理是通知用户是否对应用程序使用硬盘驱动器和系统文件授权&#xff0c;以达到帮助阻止恶意程序&#xff08;有时也…...

TypeScript三种特殊类型

1.any类型 说明&#xff1a;any类型代表着可以赋值任意类型 let nickname:any"王二"nickname15nicknametruenicknameundefinednicknamenullnickname{}2.unknown类型 说明&#xff1a;类似any类型&#xff1b;只是不能赋值到其它类型上&#xff1b;除了any和known。…...

如何使用CSS实现一个响应式轮播图?

聚沙成塔每天进步一点点 ⭐ 专栏简介⭐ 使用CSS实现响应式轮播图的示例⭐ HTML 结构⭐ CSS 样式 (styles.css)⭐ JavaScript 代码 (script.js)⭐ 实现说明⭐ 写在最后 ⭐ 专栏简介 前端入门之旅&#xff1a;探索Web开发的奇妙世界 记得点击上方或者右侧链接订阅本专栏哦 几何带…...

数据生成 | MATLAB实现MCMC马尔科夫蒙特卡洛模拟的数据生成

数据生成 | MATLAB实现MCMC马尔科夫蒙特卡洛模拟的数据生成 目录 数据生成 | MATLAB实现MCMC马尔科夫蒙特卡洛模拟的数据生成生成效果基本描述模型描述程序设计参考资料 生成效果 基本描述 1.MATLAB实现MCMC马尔科夫蒙特卡洛模拟的数据生成&#xff1b; 2.马尔科夫链蒙特卡洛方…...

保姆级教程:手把手教你搞定OpenPnP主次基准点矫正(附PCB制作与避坑心得)

OpenPnP主次基准点矫正实战指南&#xff1a;从硬件准备到精准调试 1. 准备工作&#xff1a;构建稳定的校准环境 在开始OpenPnP主次基准点矫正之前&#xff0c;充分的准备工作能避免80%的常见问题。首先需要理解基准点在贴片机坐标系中的核心作用——它们如同地图上的经纬度&…...

10个实用技巧:PHP Font Lib 字体信息提取完全教程

10个实用技巧&#xff1a;PHP Font Lib 字体信息提取完全教程 【免费下载链接】php-font-lib A library to read, parse, export and make subsets of different types of font files. 项目地址: https://gitcode.com/gh_mirrors/ph/php-font-lib 想要在PHP项目中高效处…...

大模型应用开发指南:从入门到实践,收藏这份从Demo到生产落地的完整攻略

本文分享了AI应用开发中从Demo到生产落地的完整实践&#xff0c;涵盖技术选型、架构设计、核心算法优化及部署经验。通过LangGraph、RAGFlow和Langfuse等工具&#xff0c;解决上下文超限、Prompt管理混乱等问题&#xff0c;最终实现准确率提升25%的工业级AI系统。适合程序员和小…...

高性能自动化网页信息提取工具实战指南:大规模目标扫描与安全检测技术方案

高性能自动化网页信息提取工具实战指南&#xff1a;大规模目标扫描与安全检测技术方案 【免费下载链接】URLFinder 一款快速、全面、易用的页面信息提取工具&#xff0c;可快速发现和提取页面中的JS、URL和敏感信息。 项目地址: https://gitcode.com/gh_mirrors/ur/URLFinder…...

Zynq开发中XSA文件更新全流程:从硬件修改到软件调试

1. 项目概述&#xff1a;为什么需要更新XSA文件&#xff1f;在基于Xilinx Zynq系列SoC的开发流程里&#xff0c;XSA文件&#xff08;Xilinx Support Archive&#xff09;是一个承上启下的核心枢纽。它本质上是一个压缩包&#xff0c;里面封装了硬件平台&#xff08;Hardware Pl…...

软件开发开源日报

&#x1f4cc; 今日概览今日软件开发开源领域呈现多元化发展态势&#xff0c;各大科技公司持续推进AI基础设施、云原生平台和开发者工具的开源进程。字节跳动DeerFlow 2.0成为社区焦点&#xff0c;腾讯混元Hy3开源引发行业热议&#xff0c;华为openEuler发布超节点OS重大更新。…...

解锁本科论文高效创作新思路,okbiye 赋能毕业生轻松完成学术撰稿

okbiye-免费查重复率aigc检测/开题报告/毕业论文/智能排版/文献综述/AI PPT毕业论文 - Okbiye智能写作https://www.okbiye.com/ai/bylw 引言 步入毕业季&#xff0c;本科阶段最后的学术考核毕业论文&#xff0c;成为众多应届学子面前最大的难题。从前期选题构思、框架梳理&…...

ncmdumpGUI:Windows平台终极NCM解密工具,3分钟解锁网易云音乐格式限制

ncmdumpGUI&#xff1a;Windows平台终极NCM解密工具&#xff0c;3分钟解锁网易云音乐格式限制 【免费下载链接】ncmdumpGUI C#版本网易云音乐ncm文件格式转换&#xff0c;Windows图形界面版本 项目地址: https://gitcode.com/gh_mirrors/nc/ncmdumpGUI 还在为网易云音乐…...

嵌入式工程师高薪进阶指南:从软硬兼通到系统思维的跨越

1. 嵌入式行业的现状与人才困境最近几年&#xff0c;和不少同行、猎头以及企业招聘负责人聊下来&#xff0c;一个共识越来越清晰&#xff1a;嵌入式这个行当&#xff0c;正在经历一场深刻的“冰火两重天”。一方面&#xff0c;得益于树莓派、Arduino这类高度集成、生态友好的开…...

如何通过技术优化提升百度网盘macOS版下载体验

如何通过技术优化提升百度网盘macOS版下载体验 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 对于macOS用户来说&#xff0c;百度网盘下载速度限制一直…...