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

力扣HOT100(45) 二叉树的直径

任意一条路径,都可以看作是以某个节点为 “拐点”,左边接左子树的最深路径,右边接右子树的最深路径。

比如路径4→2→1→3的拐点是节点 1:

  • 左子树最深路径:1→2→4(2 条边)
  • 右子树最深路径:1→3(1 条边)
  • 总路径长度:2+1=3(边数)

所以我们的目标转化为:

  1. 遍历树中所有节点,计算每个节点作为 “拐点” 时的路径长度;
  2. 取所有路径长度的最大值,就是整棵树的直径

完整解题步骤

1. 定义两个核心变量

  • depth(node):递归函数,返回以node为根的子树的深度(节点数)
  • ans:全局变量,记录所有节点作为拐点时,路径经过的节点数最大值

2. 递归函数depth(node)的逻辑

  1. 终止条件:如果node是空节点,返回 0(空树深度为 0)
  2. 递归左子树:得到左子树深度L
  3. 递归右子树:得到右子树深度R
  4. 更新最大值:当前节点作为拐点的路径节点数 =L + R + 1(+1 是加上当前节点本身),用这个值更新ans
  5. 返回当前子树深度max(L, R) + 1(当前节点 + 左右子树中更深的那个)

3. 主函数逻辑

  1. 初始化ans = 1(至少有一个节点,路径节点数为 1)
  2. 调用depth(root)遍历整棵树
  3. 最终直径 =ans - 1(因为边数 = 节点数 - 1)
class Solution { int ans; // 全局变量:记录所有路径的节点数最大值 // 递归函数:返回以rt为根的子树的深度(节点数) int depth(TreeNode* rt){ // 1. 终止条件:空节点,深度为0 if (rt == NULL) { return 0; } // 2. 先算左子树深度 int L = depth(rt->left); // 3. 再算右子树深度 int R = depth(rt->right); // 4. 关键:计算当前节点作为拐点的路径节点数,更新最大值 ans = max(ans, L + R + 1); // 5. 返回当前子树的深度:左右子树中更深的那个 + 当前节点 return max(L, R) + 1; } public: int diameterOfBinaryTree(TreeNode* root) { ans = 1; // 初始化为1,对应只有一个节点的情况 depth(root); // 遍历整棵树 return ans - 1; // 节点数最大值减1,得到边数(直径) } };
http://www.jsqmd.com/news/923769/

相关文章:

  • 别再为OnlyOffice离线安装头疼了!这份CentOS 7保姆级配置清单请收好
  • 基于内存补丁技术的Windows即时通讯软件消息保留解决方案深度解析
  • 酱料代加工选购指南:如何找到高性价比靠谱厂家 - 资讯纵览
  • 鸣潮自动化工具终极指南:如何用ok-ww实现后台全自动战斗
  • APKMirror:安卓应用安全下载的终极免费解决方案
  • Gemini多模态推理引擎权限提升漏洞:从普通用户到system root的4跳提权路径(含PoC视频+调试日志)
  • 终极百度网盘加速指南:免费解锁50倍下载速度的完整解决方案
  • 主题建模您的个人数据
  • 甄选:推荐上海优质的高层建筑柱加固施工队 - 品牌推广大师
  • 基于Arduino的自动发牌机:从传感器到伺服电机的机电一体化实践
  • 3个简单步骤修复Zotero Style插件高能进度条显示问题终极指南
  • OpCore Simplify:黑苹果EFI自动化生成架构深度解析
  • 如何永久保存微信聊天记录:WeChatMsg开源工具的终极解决方案
  • 日志字段解密全图谱,覆盖user_agent、x-forwarded-for、request_id等12个关键字段的语义还原与误判规避手册
  • 2026 深圳 GEO 优化机构实力排行:全意图服务标杆与优质服务商深度解读 - GEO优化
  • 3分钟掌握图像隐写术:在线工具让你的图片变身数字保险箱
  • 基于图像识别与路径规划的游戏自动化解决方案:AutoStarRail技术深度解析
  • 身份证校验码背后的设计哲学:从PTA练习题到金融支付系统的安全启示
  • 基于Arduino与WS2812B的星形动态灯光装置:从硬件设计到FastLED编程全解析
  • 如何实现微信聊天记录永久保存:WeChatMsg终极解决方案
  • Arduino红外遥控库终极指南:15分钟从零掌握智能遥控开发
  • 基于ATmega328P的水位自动控制系统设计与嵌入式实践
  • 上海黄金回收店铺联系方式推荐SS级耀辉 - 奢侈品回收
  • Arduino舵机控制玩偶打鼓机器人:从硬件连接到节奏编程
  • Obsidian PDF导出终极指南:如何用Better Export PDF插件解决中文排版难题
  • 图谱的泛化探索:从不变性到因果性
  • 【Gemini服务条款重大变更预警】:2024年7月生效的5项隐藏风险与企业级合规应对清单
  • MegSpot:5分钟掌握跨平台图片视频对比的终极指南
  • 2026年4月木颗粒燃料直销厂家推荐,生物质颗粒/锅炉燃料/燃烧颗粒/木颗粒燃料/生物质燃料,木颗粒燃料直销厂家推荐 - 品牌推荐师
  • 12306项目部署实战:从零到一掌握分布式购票系统