LeetCode hot100-543 二叉树的直径

复制代码
class Solution {
public:
    int diameterOfBinaryTree(TreeNode* root) {
        ans=0;
        maxdep(root);
        return ans;
    }
private:
    int ans;
    int maxdep(TreeNode* root){
        if(!root) return 0;
        int l=maxdep(root->left);
        int r=maxdep(root->right);
        ans=max(ans,l+r);
        return (l>r?l:r)+1;
    }
};
复制代码
int maxDepth(TreeNode* root) {
    if (!root) return 0;
    return max(maxDepth(root->left), maxDepth(root->right)) + 1;
}

这个返回的是节点数

  • 空节点:0

  • 单节点:1

  • 两层树:2

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

对于节点 2:

  • 左子树高度 = 1(节点4)

  • 右子树高度 = 1(节点5)

  • 经过节点2的最长路径 = 左高度 + 右高度 = 1 + 1 = 2(边数)

所以代码中的 l + r 实际上加的是节点数 ,但结果恰好等于边数

复制代码
ans = max(ans, l + r);

因为:

  • l = 左子树的高度(节点数)

  • r = 右子树的高度(节点数)

  • 经过当前节点的路径 = 左子树节点数 + 右子树节点数 = 边数

复制代码
return (l > r ? l : r) + 1;
          ↑              ↑
    孩子最大深度    加上当前节点到孩子的边
  • lr:孩子到他们最深后代的距离(边数)

  • +1:当前节点到孩子的 1 条边

  • 返回值:当前节点到最深后代的距离(边数)

相关推荐
念何架构之路42 分钟前
Go语言加密算法
数据结构·算法·哈希算法
AI科技星1 小时前
《数学公理体系·第三部·数术几何》(2026 年版)
c语言·开发语言·线性代数·算法·矩阵·量子计算·agi
失去的青春---夕阳下的奔跑1 小时前
560. 和为 K 的子数组
数据结构·算法·leetcode
黎阳之光1 小时前
黎阳之光:以视频孪生重构智慧医院信息化,打造高标项目核心竞争力
大数据·人工智能·物联网·算法·数字孪生
丷丩2 小时前
三级缓存下MVT地图瓦片服务性能优化策略
算法·缓存·性能优化·gis·geoai-up
m0_629494732 小时前
LeetCode 热题 100-----25.回文链表
数据结构·算法·leetcode·链表
ʚ希希ɞ ྀ3 小时前
单词拆分----dp
算法
智者知已应修善业4 小时前
【51单片机LED闪烁10次数码管显示0-9】2023-12-14
c++·经验分享·笔记·算法·51单片机
智者知已应修善业4 小时前
【51单片机2按键控制1个敞亮LED灯闪烁和熄灭】2023-11-3
c++·经验分享·笔记·算法·51单片机
AI算法沐枫4 小时前
大模型 | 大模型之机器学习基本理论
人工智能·python·神经网络·学习·算法·机器学习·计算机视觉