LeetCode-热题100:543. 二叉树的直径
创作时间:
作者:
@小白创作中心
LeetCode-热题100:543. 二叉树的直径
引用
CSDN
1.
https://blog.csdn.net/qq_44852180/article/details/137826849
二叉树的直径是指树中任意两个节点之间最长路径的长度。这条路径可能经过也可能不经过根节点。在LeetCode的这道题目中,我们需要计算给定二叉树的直径。
题目描述
给你一棵二叉树的根节点,返回该树的直径。
二叉树的直径是指树中任意两个节点之间最长路径的长度。这条路径可能经过也可能不经过根节点
root
。
两节点之间路径的长度由它们之间边数表示。
示例 1:
输入:root = [1,2,3,4,5]
输出:3
解释:3 ,取路径 [4,2,1,3] 或 [5,2,1,3] 的长度。
示例 2:
输入:root = [1,2]
输出:1
提示:
- 树中节点数目在范围 [1, 104] 内
- -100 <= Node.val <= 100
代码及注释
/**
* Definition for a binary tree node.
* type TreeNode struct {
* Val int
* Left *TreeNode
* Right *TreeNode
* }
*/
func diameterOfBinaryTree(root *TreeNode) int {
// 定义一个内部的 dfs 函数用于深度优先搜索
var dfs func(*TreeNode) int
// 初始化最大直径为 0
res := 0
dfs = func(node *TreeNode) int {
// 如果节点为空,返回 0
if node == nil {
return 0
}
// 递归计算左子树和右子树的深度
l := dfs(node.Left)
r := dfs(node.Right)
// 更新最大直径
res = max(res, l + r)
// 返回当前节点的深度
return max(l, r) + 1
}
// 调用 dfs 函数,开始计算
dfs(root)
return res
}
// 辅助函数,返回两个整数的最大值
func max(a, b int) int {
if a > b {
return a
}
return b
}
代码解释
- 定义
dfs
函数:
dfs
函数用于深度优先搜索二叉树,并在递归过程中更新最大直径。 - 递归计算深度:
- 如果节点为空,则返回 0。
- 递归计算左子树
l
和右子树
r
的深度。 - 更新当前直径的最大值
res
为
l + r
。 - 返回当前节点的深度
max(l, r) + 1
。
- 返回结果:最后返回最大直径
res
。
路径为节点
4
、节点
2
、节点
1
、节点
3
或节点
5
。
热门推荐
苏州站附近打卡:拙政园&山塘街
苏州火车站最新出行攻略:春游+扫墓两不误!
汽车发电机如何进行检测?检测结果对车辆电气系统有何意义?
泰山景区停车攻略:天外村还是红门?
国庆自驾游泰山必看:免费停车+六大进山路线全攻略
五花肉炒花菜的正确做法:既不直接炒也不焯水,饭店级美味在家就能做
泰式炒菜花,(健康美味的泰国风味;)
如何改善我们的睡眠:从认识到应对
36岁迪马利亚18分钟上演帽子戏法,本菲卡7-0大胜阿马多拉之星!
梅西第二!本世纪帽子戏法排行榜,姆巴佩第七,C罗拉开差距
汽车发电机坏了是否可以维修?
充电电压过低的原因是什么?如何解决这一问题?
教学 | 起式——吴式太极拳的基本功
探秘嘉兴古镇凤桥:千年古刹石佛寺与梅花洲
秋日打卡!凤桥镇亲子游必玩景点推荐
凤桥水蜜桃:一颗桃子带火乡村旅游
通达信筹码控盘比例副图公式 使用方法说明 源码文件分享
冬季加湿器清洁指南:避免肺炎风险
冬季养生:如何科学使用加湿器?
冬季干燥?加湿器选购全攻略!
冬季加湿神器:超声波加湿器选购全攻略
HR教你职场情绪管理新招数
《情商高就是说话让人舒服》教你提供情绪价值
测量发电机好坏的方法有哪些?如何进行定期检查和维护?
女子100米栏
奥运篮球比赛规则概述
跨栏技术动作解析及其训练方法
超绝反差感!“刘翔师弟”戴着眼镜跑进110米栏半决赛,小组第一晋级
男子110米栏:跨越百年的速度与技巧
跨栏技术动作解析及其训练方法