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

(每日一道算法题)求根节点到叶节点数字之和

129. 求根节点到叶节点数字之和 - 力扣(LeetCode)

给你一个二叉树的根节点 root ,树中每个节点都存放有一个 0 到 9 之间的数字。

每条从根节点到叶节点的路径都代表一个数字:

  • 例如,从根节点到叶节点的路径 1 -> 2 -> 3 表示数字 123 。

计算从根节点到叶节点生成的 所有数字之和 。

叶节点 是指没有子节点的节点。

 

 

理解问题:我们需要计算二叉树中从根节点到每个叶节点的路径所表示数字的总和。路径表示的数字由路径上的节点值按顺序组成。

问题分析

二叉树的每个节点存放着0-9的数字,从根节点到叶节点的路径构成了一个数字。例如,路径1->2->3表示数字123。我们需要计算所有这样的路径数字之和。

关键点:

  • ​叶节点​​:没有子节点的节点(即路径终点)
  • ​数字生成规则​​:当前路径数字 = 上一层路径数字×10 + 当前节点值
  • ​总和计算​​:对所有叶节点的路径数字求和

解决方案:深度优先搜索(DFS)

采用递归方法遍历每条路径,在遍历过程中累积路径数字,到达叶节点时将当前路径数字加入总和。

class Solution {public int sumNumbers(TreeNode root) {// 从根节点开始遍历,初始路径值为0return dfs(root, 0);}private int dfs(TreeNode node, int currentSum) {if (node == null) return 0;// 更新当前路径值:原值×10 + 当前节点值currentSum = currentSum * 10 + node.val;// 如果是叶节点,返回当前路径值if (node.left == null && node.right == null) {return currentSum;}// 递归计算左右子树的结果,并返回它们的和int leftSum = dfs(node.left, currentSum);int rightSum = dfs(node.right, currentSum);return leftSum + rightSum;}
}

算法流程

​开始遍历​​:从根节点开始,初始路径值为0

​更新路径值​​:路径值 = 路径值×10 + 当前节点值

​叶节点判断​​:

  • 如果是叶节点,返回当前路径值
  • 否则递归遍历子节点

​结果合并​​:返回左右子树结果之和

 

复杂度分析

  • ​时间复杂度​​:O(N) - 每个节点只访问一次
  • ​空间复杂度​​:O(H) - 递归调用栈深度(H为树的高度)

优化与注意事项

  1. ​空节点处理​​:递归前检查子节点是否存在
  2. ​大数问题​​:题目限定节点值为0-9,路径深度有限,无需担心溢出
  3. ​迭代替代方案​​:可使用DFS栈或BFS队列实现,但递归更直观

 

 

http://www.xdnf.cn/news/11817.html

相关文章:

  • HTML基础学习
  • MYSQL之表的内连和外连
  • ABP-Book Store Application中文讲解 - Part 8: Authors: Application Layer
  • 解决Java项目NoProviderFoundException报错
  • C++课设:银行账户管理系统
  • 【Golang笔记04】Go语言中文件操作的学习笔记
  • tauri2项目中自定义执行cmd命令界面卡死以及中文出错问题
  • Elasticsearch中的监控(Monitoring)功能介绍
  • 【Redis】笔记|第8节|大厂高并发缓存架构实战与优化
  • 八:操作系统设备管理之I/O 操作方法
  • AI编程规范失控?三大策略用Cursor Rules精准约束
  • 电子手机商城源码+springboot+vue3(带用户协同过滤个性化推荐算法)
  • DexUMI:以人手为通用操作界面,实现灵巧操作
  • 平面上的最接近点对
  • 怎么通过 jvmti 去 hook java 层函数
  • 构建高效可靠的电商 API:设计原则与实践指南
  • PyTorch学习笔记 - 损失函数
  • unix/linux,sudo,其历史争议、兼容性、生态、未来展望
  • 如何有效删除 iPhone 上的所有内容?
  • 激光干涉仪:解锁协作机器人DD马达的精度密码
  • 前端工具库lodash与lodash-es区别详解
  • ES海量数据更新及导入导出备份
  • 设计模式之单例模式(二): 心得体会
  • UE 5 和simulink联合仿真,如果先在UE5这一端结束Play,过一段时间以后**Unreal Engine 5** 中会出现显存不足错误
  • 功能测试、性能测试、安全测试详解
  • 近端策略优化(PPO,Proximal Policy Optimization)
  • vue实现点击按钮input保持聚焦状态
  • Oracle实用参考(13)——Oracle for Linux静默安装(1)
  • springboot 微服务 根据tomcat maxthread 和 等待用户数量,达到阈值后,通知用户前面还有多少用户等待,请稍后重试
  • 低代码采购系统搭建:鲸采云+能源行业订单管理自动化案例