二叉树的直径 - LeetCode 热题 40

大家好!我是曾续缘😛

今天是《LeetCode 热题 100》系列

发车第 40 天

二叉树第 5 题

❤️点赞 👍 收藏 ⭐再看,养成习惯

二叉树的直径

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

二叉树的 直径 是指树中任意两个节点之间最长路径的 长度 。这条路径可能经过也可能不经过根节点 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
难度:❤️

解题方法

如果我们只看根节点、左子树、右子树,那么对于经过根节点的所有直径中,它的最大值等于左子树的最大高度加上右子树的最大高度。

由于我们无法确定最大直径经过哪个具体的根节点,因此在遍历时需要逐一判断,并使用一个全局变量来保存当前的最大值。在计算二叉树的最大深度的同时,我们可以方便地更新全局变量,以维护最大直径的值。

Code

/**
 * Definition for a binary tree node.
 * public class TreeNode {
 *     int val;
 *     TreeNode left;
 *     TreeNode right;
 *     TreeNode() {}
 *     TreeNode(int val) { this.val = val; }
 *     TreeNode(int val, TreeNode left, TreeNode right) {
 *         this.val = val;
 *         this.left = left;
 *         this.right = right;
 *     }
 * }
 */
class Solution {
    int ans;
    private int maxHeight(TreeNode root){
        if(root == null){
            return 0;
        }
        int l = maxHeight(root.left);
        int r = maxHeight(root.right);
        ans = Math.max(ans, l + r);
        return 1 + Math.max(l, r);
    }
    public int diameterOfBinaryTree(TreeNode root) {
        ans = 0;
        maxHeight(root);
        return ans;
    }
}

相关推荐

  1. leetcode543--直径

    2024-04-22 10:12:05       34 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-04-22 10:12:05       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-04-22 10:12:05       100 阅读
  3. 在Django里面运行非项目文件

    2024-04-22 10:12:05       82 阅读
  4. Python语言-面向对象

    2024-04-22 10:12:05       91 阅读

热门阅读

  1. SWCTF

    SWCTF

    2024-04-22 10:12:05      37 阅读
  2. 负载均衡原理及算法

    2024-04-22 10:12:05       33 阅读
  3. Sentinel

    Sentinel

    2024-04-22 10:12:05      34 阅读
  4. 阿里云难题学习笔记

    2024-04-22 10:12:05       29 阅读
  5. C#基础|数组的使用、字符串的分隔与连接

    2024-04-22 10:12:05       32 阅读
  6. 6、掌握对象在内存中的分配与变迁

    2024-04-22 10:12:05       36 阅读
  7. 20个npm常用命令及详解

    2024-04-22 10:12:05       30 阅读
  8. 监控指定任务,结束钉钉通知

    2024-04-22 10:12:05       44 阅读
  9. 【设计模式】模板方法模式

    2024-04-22 10:12:05       27 阅读