二叉树的直径

算法练习day2

二叉树的直径定义为树中任意两个节点之间最长路径的长度。这个路径不一定经过根节点,但路径的长度由它们之间的边数表示。

例如,对于以下二叉树:

text 复制代码
    1
   / \
  2   3
 / \     
4   5

最长路径是节点 4 → 2 → 5(或者 5 → 2 → 4),长度为 3 条边。

在算法实现中,通常使用深度优先搜索(DFS)来计算每个节点的左右子树高度,然后更新直径值:

  • 对于每个节点,计算左子树高度和右子树高度
  • 当前节点可能形成的直径 = 左子树高度 + 右子树高度
  • 全局维护最大直径值

上面代码中的 diameterOfBinaryTree 函数就是基于这个思路实现的。

javascript 复制代码
function diameterOfBinaryTree(root) {
  let ans = 0
  // 返回当前节点子树高度
  function getHeight(node) {
    if (!node) return -1
    const leftH = getHeight(node.left)
    const rightH = getHeight(node.right)
    ans = Math.max(ans, leftH + rightH)
    return Math.max(leftH + rightH) + 1
  }
  getHeight(root)
  return ans
}
相关推荐
CodeMi2 分钟前
2026 CSS 接管了这些 JS 的活:6 个 Baseline 特性的落地取舍
javascript·css
qq_4523962328 分钟前
第四篇:《索引原理与实战:B-tree、Hash、GIN、GiST、BRIN》
算法·哈希算法·gin
乌暮34 分钟前
综合案例:宠物电商系统
java·开发语言·spring·mvc·restful·1024程序员节
大文说跨境35 分钟前
亚马逊多店铺的图片素材怎么批量去重:EXIF 与哈希的处理流程
开发语言·php
全栈项目管理程序猿38 分钟前
ArcGIS JS 基础教程(35):体元系列 - VoxelLayer 时间维度动画
前端·javascript
西索斯coding44 分钟前
Qwen3-Max 与 Qwen-Plus:60 个真实修复任务评测方案
大数据·网络·算法·ai
INGNIGHT1 小时前
440 · 背包问题(三)(无限次数)
算法·leetcode·动态规划
suhan1 小时前
【数据结构】七、查找:1.查找的概念、线性结构查找(顺序、折半(二分)、插值、稠密、分块、倒排)
数据结构·算法·排序算法
killerbasd2 小时前
总结 10.26
算法
深圳安锐科技有限公司2 小时前
从成像尺度到亚像素解算:变焦视觉位移监测如何让远近断面都稳
图像处理·人工智能·深度学习·算法·计算机视觉·系统架构·结构健康监测