543. 二叉树的直径

题目

  • 给你一棵二叉树的根节点,返回该树的 直径 。

二叉树的 直径 是指树中任意两个节点之间最长路径的 长度 。这条路径可能经过也可能不经过根节点 root 。

两节点之间路径的 长度 由它们之间边数表示。

法一、DFS

var diameterOfBinaryTree = function(root) {
    let maxDiameter = 0; // 初始化最大直径为0

    // 深度优先搜索,返回当前节点的深度
    function depth(node) {
        if (!node) return 0; // 如果节点为空,深度为0

        // 递归计算左子树的深度
        const leftDepth = depth(node.left);
        // 递归计算右子树的深度
        const rightDepth = depth(node.right);

        // 更新最大直径
        // 当前节点的直径等于左子树深度 + 右子树深度
        // 针对不经过根节点的情况
        maxDiameter = Math.max(maxDiameter, leftDepth + rightDepth);

        // 返回当前节点的深度,每层递归完向上走+1
        return Math.max(leftDepth, rightDepth) + 1;
    }

    depth(root); // 从根节点开始计算深度
    return maxDiameter; // 返回计算得到的最大直径
}
posted @   Frommoon  阅读(6)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· winform 绘制太阳,地球,月球 运作规律
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
点击右上角即可分享
微信分享提示