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

【Hot 100 刷题计划】 LeetCode 543. 二叉树的直径 | C++ 后序遍历 (求深度的完美副产品)

LeetCode 543. 二叉树的直径

📌 题目描述

题目级别:简单

给你一棵二叉树的根节点,返回该树的直径
二叉树的直径是指树中任意两个节点之间最长路径的长度。这条路径可能经过也可能不经过根节点root
两节点之间路径的长度由它们之间边数表示。

  • 示例 1:
    输入:root = [1,2,3,4,5]
    输出:3
    解释:3 ,取路径[4,2,1,3][5,2,1,3]的长度。

💡 破题思路:求深度的“副产品”

二叉树里任意一条路径,都可以看作是**“从某个节点往下走到左子树的最深处”,加上“从该节点往下走到右子树的最深处”**。
因此,穿过某个节点node的最长路径长度(边数)其实就等于:

左子树的最大深度 + 右子树的最大深度

这让我们立刻联想到了另一道极其经典的题:《104. 二叉树的最大深度》。
我们完全可以复用求最大深度的自底向上 (后序遍历)逻辑:

  1. 递归求出左子树的深度L
  2. 递归求出右子树的深度R
  3. “夹带私货”:在拿到LR的瞬间,穿过当前节点的直径也就知道了,就是L + R。我们用它去挑战并更新一个全局的max_diameter
  4. 回归主业:向父节点汇报当前子树的最大深度:max(L, R) + 1

在求深度的过程中,顺手就把最大直径给求出来了,一鱼两吃!


💻 C++ 代码实现 (无副作用极简版)

classSolution{public:intdiameterOfBinaryTree(TreeNode*root){intmax_diameter=0;// 局部变量,避免多个测试用例导致的状态污染dfs(root,max_diameter);returnmax_diameter;}// 返回以 root 为根的子树的最大深度 (节点数)// 传入 max_diameter 的引用,实时更新最大直径intdfs(TreeNode*root,int&max_diameter){// 如果是空节点,深度为 0if(!root)return0;// 分别求左右子树的深度intL=dfs(root->left,max_diameter);intR=dfs(root->right,max_diameter);// 核心高光:穿过当前节点的路径边数,刚好就是左右子树的深度之和// 更新全局最大直径max_diameter=max(max_diameter,L+R);// 返回当前节点的最大深度给上一层returnmax(L,R)+1;}};
http://www.cnnetsun.cn/news/2070356.html

相关文章:

  • HZERO微服务实战:手把手教你配置hzero-file对接MinIO,并集成OnlyOffice实现在线编辑
  • C# WinForm与MATLAB混合编程实战:从函数打包到无缝调用
  • 会议灭绝计划:测试工程师的异步协作实践指南
  • PlantUML在线编辑器:3分钟学会用代码绘制专业UML图的完整教程
  • 诊断测试效率翻倍:深度解析CDD文件在CANoe、Diva与VTsystem中的核心配置项
  • Qwen3-4B-Instruct功能体验:256K上下文窗口下的长文本智能对话实测
  • 别再傻傻等在线下载了!手把手教你Arthas离线安装(附Maven仓库下载地址)
  • 从手机充电到光伏发电:聊聊PN结这个‘半导体心脏’的日常应用
  • 2025届最火的六大降AI率方案解析与推荐
  • SAC算法里的“熵”到底在干嘛?深入聊聊它比TD3更稳定、探索更强的秘密
  • 别再只盯着MACD了!用Python回测SuperTrend指标在A股的表现到底怎么样?
  • VSCode多人协同时CPU飙升至92%?深度剖析Extension Host内存泄漏链与4个零侵入修复补丁
  • 元宇宙中的软件测试:虚拟世界的质量如何保障
  • 终极本地多人游戏解决方案:Nucleus Co-Op让单台电脑变身游戏派对中心
  • 深度解析:TDengine 时序数据库在 IT 运维监控中的底层逻辑与实践
  • 基于条件风险价值CVaR的微网虚拟电厂多场景随机规划与风险价值度量研究
  • 实战解析:如何用D3KeyHelper构建暗黑3自动化战斗系统
  • Windows 11任务栏拖放功能终极修复指南:快速恢复文件拖拽体验
  • CubeMX配置DMAMUX的隐藏细节:以STM32H723的EXTI触发DMA为例,聊聊那些容易踩的坑
  • 具身智能体在复杂环境中的责任归属
  • 虚拟机技术
  • 终极指南:在Windows电脑上直接运行安卓APK的完整解决方案
  • 别再只盯着小木虫了!2024年CCF期刊投稿,这3个新工具帮你高效避坑
  • vJoy虚拟手柄:解锁Windows游戏控制的无限可能
  • 如何用SMUDebugTool解锁AMD Ryzen处理器的隐藏性能:完整免费教程
  • 索尼相机完全解锁指南:OpenMemories-Tweak让你的摄影体验升级
  • Python实战:基于Matchms的质谱数据预处理与相似度计算全流程
  • 英雄联盟全能助手League Akari:3分钟快速部署的免费游戏效率神器
  • MATLAB转Python必看:信号处理之EMD分解,两个平台结果为啥不一样?
  • 网盘下载限速终结者:LinkSwift直链助手完整使用指南