543.二叉树的直径

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

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

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

java 复制代码
/**
 * 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 = 0;
    public int diameterOfBinaryTree(TreeNode root) {
        dfs(root);
        return ans;
    }
    public int dfs(TreeNode node) {
        if ( node == null) {
            return -1; // dfs(null) + 1 = 0 这样空节点的左右链长都是为0
        }

        int leftLen = dfs(node.left) + 1; // 左子树最大链长 + 1
        int rightLen = dfs(node.right) + 1; // 右子树最大链长 + 1
        ans = Math.max(ans, leftLen + rightLen); // 两条链拼成路径
        return Math.max(leftLen, rightLen);  // 当前子树最大链长
    }
}
相关推荐
张宇Joaquin41 分钟前
鲲鹏统一并行加速库KUPL--异步数据拷贝
线性代数·算法·矩阵·numpy
GlobalInfo43 分钟前
创新不是追逐热点,是在变化中建立长期竞争力
大数据·算法
lvwangshu1 小时前
线性代数基础 Linear Algebra Basics
数学·算法
一只小阿乐1 小时前
java 语法学习 1
java·开发语言·学习
2601_962073971 小时前
苍穹外卖-day07(Spring Cache & 购物车业务逻辑)
java·后端·spring
顶点多余1 小时前
算法哪些事儿---2
java·开发语言
ZhouDevin1 小时前
算法论文/数据集5——AlignPrune(CVPR2026)基于样本损失时间序列精确识别噪声样本
算法
深入云栈1 小时前
CompleteFuture VS CompletableFuture:Netty 为何自研 Future
java·架构
choumou_M2 小时前
SpringBoot_7:用户资源的上传与修改
java·spring boot·后端
十铭忘2 小时前
HMM(隐马尔可夫模型)的理解7——Baum–Welch 算法
人工智能·算法