面试算法-173-二叉树的直径

题目

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

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

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

示例 1:

输入:root = 1,2,3,4,5

输出:3

解释:3 ,取路径 4,2,1,35,2,1,3 的长度。

java 复制代码
class Solution {
    public int diameterOfBinaryTree(TreeNode root) {
        int[] max = { 0 };
        dfs(root, max);
        return max[0];
    }

    public int dfs(TreeNode root, int[] max) {
        if (root == null) {
            return 0;
        }

        int[] maxLeft = { 0 };
        int left = dfs(root.left, maxLeft);
        int[] maxRight = { 0 };
        int right = dfs(root.right, maxRight);

        max[0] = Math.max(maxLeft[0], maxRight[0]);
        max[0] = Math.max(max[0], left + right);

        return Math.max(left, right) + 1;
    }
}
相关推荐
程序喵大人12 分钟前
【C++进阶】STL算法与函数对象 - 02 sort为什么需要随机访问迭代器
开发语言·c++·算法
hanlin0320 分钟前
动态规划专练:力扣第121、122题
笔记·算法·leetcode
windliang25 分钟前
Claude Code 源码分析(七):Skill 如何进入 Agent
前端·人工智能·面试
To_OC26 分钟前
LC 74 搜索二维矩阵:换皮的二分查找,我居然一开始没看出来
javascript·算法·leetcode
缓冲中请稍后27 分钟前
React Router 完全指南:从 HashRouter 到 BrowserRouter
前端·面试
文心快码BaiduComate27 分钟前
文心快码荣获“中国优秀软件产品”,实力再获国家级认可
算法·代码规范
玖玥拾31 分钟前
LeetCode 189 轮转数组
算法·leetcode
ZhangShao060744 分钟前
题解:CF2249B
c++·算法
小玮看世界1 小时前
[Python]线段树与二分法
数据结构·算法
MindUp2 小时前
面试录音视频的AI复盘方案:从语音转录到RAG问答的技术实践
人工智能·面试·音视频