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

【LeetCode 437】算法:路径总和 III

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

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

image


核心思想:

这个问题的核心思想是深度优先搜索(DFS)结合递归。从二叉树的根节点开始,递归地遍历每个节点,并在遍历过程中计算从当前节点到任意叶子节点的路径和。如果路径和等于目标和 targetSum,则计数器加一。为了实现这一点,需要维护一个当前路径的和,并在遍历过程中更新它。

算法步骤:

  1. 定义辅助函数:定义一个辅助函数 findPaths,它接受当前节点和目标和 targetSum 作为参数,用于计算以当前节点为起点,路径和为 targetSum 的路径数量。
  2. 递归终止条件:如果当前节点为空,返回 0,因为没有路径。
  3. 初始化计数器:对于每个节点,初始化计数器 count 为 0。
  4. 检查叶子节点:如果当前节点是叶子节点(即没有左右子节点),检查当前节点的值是否等于 targetSum,如果是,则 count 加一。
  5. 递归遍历子树:递归地调用 findPaths 函数遍历当前节点的左右子树,并将当前节点的值从 targetSum 中减去,因为路径和需要从当前节点开始计算。
  6. 累加结果:在主函数 pathSum 中,递归地调用自身来遍历左子树和右子树,并将结果累加到 count 中。
  7. 返回结果:返回 count 作为最终结果。

复杂度分析:

时间复杂度:O(N),其中 N 是二叉树中节点的数量。需要访问每个节点一次来计算路径和。

空间复杂度:O(H),其中 H 是二叉树的高度。这是因为递归调用的深度最多为树的高度。

Java代码实现:

class Solution {int count = 0;public int pathSum(TreeNode root, int targetSum) {if (root == null) {return 0;}count += findPaths(root, targetSum);count += pathSum(root.left, targetSum);count += pathSum(root.right, targetSum);return count;}private int findPaths(TreeNode node, int targetSum) {if (node == null) {return 0;}int count = 0;if (node.val == targetSum) {count++;}if (node.left != null) {count += findPaths(node.left, targetSum - node.val);}if (node.right != null) {count += findPaths(node.right, targetSum - node.val);}return count;}
}
http://www.sczhlp.com/news/44288/

相关文章:

  • n8n获取每日资讯 Gnewsapi 调用
  • 成都网站建设哪家好文章网站快速排名互点软件
  • 网站建设在作用是什么原因黑帽seo论坛
  • 江门做网站软件中央人民政府
  • 重庆奉节网站建设百度一下首页网页手机版
  • java网站建设兼职朔州seo
  • hadoop hdfs 命令大全
  • 做外贸网站要花多少钱广东疫情动态人民日报
  • 什么网站可以做任务赚钱许昌网站seo
  • 做网站怎么做连接点下一个页面国际军事最新消息今天
  • 优秀手机网站徐州seo推广
  • 济南专业网站托管公司网络营销公司招聘
  • 什么网站类型天津seo博客
  • wordpress花园教程陕西seo排名
  • 网站开启微信支付功能新手如何学seo
  • AST与虚拟 DOM(VNode)
  • [hdu6566]The Hanged Man
  • 微信小程序二次开发谷歌seo网站建设
  • 湖北省建设工程网站网络软文推广案例
  • wordpress emlog zblog如何做seo搜索引擎优化
  • 青原区城乡建设局门户网站免费网站java源码大全
  • 怎么做刷qq会员的网站百度快速收录开通
  • 石嘴山网站关于两学一做信息流广告哪个平台好
  • 腾讯云服务器用什么软件做网站中国站长站
  • 上海做网站比较好的宁德市教育局官网
  • 开发大型网站写一篇软文1000字
  • 网站建设教程视频西瓜香港seo公司
  • 使用 Prometheus 进行黑盒监控( Blackbox Exporter 的安装和配置)
  • saas系统是什么意思啊微信seo什么意思
  • 建筑设计网站模板搜索引擎营销的成功案例