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

leetcode 437.路径总和III

思路:其实说出来也就是一个深度优先搜索的问题而已。

我们可以首先遍历出树的全部结点,然后我们就从中一个一个拿出来进行深度优先搜索,也就是俗称的DFS。DFS的参数就定义为三个参数,一个参数用来存放结点,一个参数用来存放目前已经加了多少的和,还有目标和。

在DFS过程中,我们需要判断的条件无非有那么几个:首先就是本结点是不是空的,如果是就直接结束这个函数;如果我们目前加的和已经和目标i和相同了,我们就让全局变量cnt加1.

注意:有些人会问,为什么sum>targetSum不能作为终止条件呢?因为这里面的元素中会考虑负数的存在,我们如果目前和大于目标和了之后,要是后面有负数可以加上变成目标和,我们岂不是错过了这一种可能呢?所以这个不能作为条件。

还有就是结点有无的判断和是否是目标和的判断一定要分清先后,如果结点不存在在前,我们就需要先加上本结点的元素,然后判断目标和是否一致。

/*** 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 {int cnt=0;List<TreeNode>list=new ArrayList<>();public int pathSum(TreeNode root, int targetSum) {if(root==null)return 0;qianxu(root);for(int i=0;i<list.size();i++){dfs(list.get(i),0,targetSum);}return cnt;}public void dfs(TreeNode t,long sum,int targetSum){if(t==null)return;sum+=t.val;if(sum==targetSum)cnt++;dfs(t.left,sum,targetSum);dfs(t.right,sum,targetSum);}public void qianxu(TreeNode t){if(t==null)return;list.add(t);qianxu(t.left);qianxu(t.right);}
}

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • FPGA基本结构和简单原理
  • docker|Oracle数据库|docker快速部署Oracle11g和数据库的持久化(可用于生产环境)
  • 如何免费调用GPT API进行自然语言处理
  • 力扣2563.统计公平数对的数目
  • 2024年9月第3周AI资讯
  • android10 系统定制:增加应用使用数据埋点,应用使用时长统计
  • 【uni-app】小兔鲜项目-基础架构-请求和上传文件拦截器
  • 大数据最新面试题(持续更新)
  • 语音识别与语音控制的原理介绍
  • C++的初阶模板和STL
  • 漫步者头戴式耳机怎么样?漫步者、西圣、索尼三大耳机测评对比
  • 1.3 MySql的用户管理
  • 基于STM32红外感应的自动迎客人语音控制系统设计
  • .NET Core中的时区转换问题
  • Java设计模式—面向对象设计原则(五) ----->迪米特法则(DP) (完整详解,附有代码+案例)
  • bootstrap创建登录注册页面
  • CAP理论的例子讲解
  • CSS实用技巧干货
  • es6(二):字符串的扩展
  • Mocha测试初探
  • PhantomJS 安装
  • Python_OOP
  • SegmentFault 技术周刊 Vol.27 - Git 学习宝典:程序员走江湖必备
  • Vue.js-Day01
  • Xmanager 远程桌面 CentOS 7
  • 测试如何在敏捷团队中工作?
  • 高程读书笔记 第六章 面向对象程序设计
  • 关于Java中分层中遇到的一些问题
  • 开年巨制!千人千面回放技术让你“看到”Flutter用户侧问题
  • 来,膜拜下android roadmap,强大的执行力
  • 扑朔迷离的属性和特性【彻底弄清】
  • 嵌入式文件系统
  • 新书推荐|Windows黑客编程技术详解
  • 最简单的无缝轮播
  • Java性能优化之JVM GC(垃圾回收机制)
  • LIGO、Virgo第三轮探测告捷,同时探测到一对黑洞合并产生的引力波事件 ...
  • mysql面试题分组并合并列
  • 阿里云ACE认证学习知识点梳理
  • 移动端高清、多屏适配方案
  • ​【原创】基于SSM的酒店预约管理系统(酒店管理系统毕业设计)
  • ​批处理文件中的errorlevel用法
  • (4) openssl rsa/pkey(查看私钥、从私钥中提取公钥、查看公钥)
  • (备忘)Java Map 遍历
  • (分类)KNN算法- 参数调优
  • (附源码)springboot 校园学生兼职系统 毕业设计 742122
  • (亲测)设​置​m​y​e​c​l​i​p​s​e​打​开​默​认​工​作​空​间...
  • (三)docker:Dockerfile构建容器运行jar包
  • (十)T检验-第一部分
  • (原創) 人會胖會瘦,都是自我要求的結果 (日記)
  • (转载)微软数据挖掘算法:Microsoft 时序算法(5)
  • *算法训练(leetcode)第四十五天 | 101. 孤岛的总面积、102. 沉没孤岛、103. 水流问题、104. 建造最大岛屿
  • .NET 6 在已知拓扑路径的情况下使用 Dijkstra,A*算法搜索最短路径
  • .net Application的目录
  • .Net MVC4 上传大文件,并保存表单
  • .net Signalr 使用笔记