【LeetCode】543. 二叉树的直径(js 实现)

本文详细介绍了LeetCode上的543题《二叉树的直径》的解决方案。通过实现`diameterOfBinaryTree`函数,利用递归计算二叉树的最大深度,从而找出树中最长路径的长度。`maxDepth`辅助函数用于计算单个节点的最大深度,最终返回二叉树的直径。
摘要由CSDN通过智能技术生成

1、题目

543. 二叉树的直径 - 力扣(LeetCode)

2、实现

(1)思路

(2)代码

/**
 * Definition for a binary tree node.
 * function TreeNode(val, left, right) {
 *     this.val = (val===undefined ? 0 : val)
 *     this.left = (left===undefined ? null : left)
 *     this.right = (right===undefined ? null : right)
 * }
 */
/**
 * @param {TreeNode} root
 * @return {number}
 */
var diameterOfBinaryTree = function(root) {
    res = 1;
    maxDepth(root);
    // 二叉树直径:二叉树最长路径节点的最大值-1
    return res - 1;
};

// 求二叉树的最大深度
function maxDepth(root) {
    if(root === null) {
        return 0;
    }
    const left = maxDepth(root.left);
    const right = maxDepth(root.right);
    // 求经过的节点的最大个数,经过该根节点的节点个数为:
    // 左子树最大节点数+右子树最大节点数+根节点本身(1)
    res = Math.max(res, left + right + 1);
    return Math.max(left, right) + 1;
}

3、参考

二叉树的直径 - 二叉树的直径 - 力扣(LeetCode)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

想做一只快乐的修狗

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值