543. 二叉树的直径 --力扣 --JAVA

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

 题目

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

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

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

解题思路

    1. 最长长度可以理解为左子树最长路径加上右子树最长路径;
    2. 因此可以通过递归来获取每个节点左右子树的最长长度,最后得到根节点的最长直径;

    代码展示

    class Solution {
        private int ans;
        public int diameterOfBinaryTree(TreeNode root) {
            dfs(root);
            return ans;
        }
        public int dfs(TreeNode root){
            if(root == null) {
                return -1;
            }
            int leftLength = dfs(root.left) + 1;
            int rightLength = dfs(root.right) + 1;
            ans = Math.max(ans, leftLength + rightLength);
            return Math.max(leftLength, rightLength);
        }
    }

    image.gif


    目录
    相关文章
    |
    6天前
    |
    存储 Java
    Java实现二叉树
    Java实现二叉树
    20 0
    |
    2天前
    |
    存储 Java
    JAVA中二叉树的基础与应用
    JAVA中二叉树的基础与应用
    6 1
    |
    7天前
    【力扣刷题】二叉树的中序遍历、二叉树的最大深度、翻转二叉树、对称二叉树
    【力扣刷题】二叉树的中序遍历、二叉树的最大深度、翻转二叉树、对称二叉树
    14 0
    |
    10天前
    |
    Java
    JAVA数据结构刷题 -- 二叉树进阶
    JAVA数据结构刷题 -- 二叉树进阶
    18 0
    |
    10天前
    |
    存储 Java
    JAVA数据结构刷题 -- 力扣二叉树
    JAVA数据结构刷题 -- 力扣二叉树
    16 0
    |
    11天前
    [LeetCode]—— 226——翻转二叉树
    [LeetCode]—— 226——翻转二叉树
    |
    11天前
    [LeetCode]——965——单值二叉树
    [LeetCode]——965——单值二叉树
    |
    12天前
    LeetCode——101——对称二叉树
    LeetCode——101——对称二叉树
    35 12
    |
    7天前
    |
    索引
    【力扣刷题】两数求和、移动零、相交链表、反转链表
    【力扣刷题】两数求和、移动零、相交链表、反转链表
    15 2
    【力扣刷题】两数求和、移动零、相交链表、反转链表
    |
    7天前
    |
    算法
    "刷题记录:哈希表+双指针 | leetcode-2465. 不同的平均值数目 "
    该文段是一篇关于编程题目的解答,主要讨论如何找到数组中所有不同平均值的个数。作者首先使用排序和哈希集来解决,将数组转为列表排序后,通过双指针计算平均值并存入哈希集以去重。然后,作者发现可以优化方案,通过双指针在排序后的数组中直接计算两数之和,用哈希集记录不重复的和,从而避免实际计算平均值,提高了算法效率。最终代码展示了这两种方法。
    15 0