543. 二叉树的直径

题目

543. 二叉树的直径(简单)

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

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

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

示例 1:

输入:

[1,2,3,4,5]

输出:

3

解释:3,取路径 [4,2,1,3] 或 [5,2,1,3] 的长度。

示例 2:

输入:

[1,2]

输出:

1

提示:

  • 树中节点数目在范围 [1, 10^4]

思路

DFS 边统计边更新:递归函数返回节点深度(max(左, 右) + 1),在回溯时用「左深度 + 右深度」更新经过当前节点的最长路径(按节点数记为 l + r + 1),最终答案为最大节点数减 1(边数)。

代码

# Definition for a binary tree node.
# class TreeNode:
#     def __init__(self, val=0, left=None, right=None):
#         self.val = val
#         self.left = left
#         self.right = right
class Solution:
    def diameterOfBinaryTree(self, root: Optional[TreeNode]) -> int:
        self.ans = 0
        def depth(node):
            if not node:
                return 0
            l = depth(node.left)
            r = depth(node.right)
            self.ans = max(self.ans, l + r + 1)
            return max(l, r) + 1

        depth(root)
        return self.ans - 1

543. 二叉树的直径
https://mingsm17518.github.io/2026/09/15/刷题笔记/Hot100/543. 二叉树的直径/
作者
Ming
发布于
2026年9月15日
更新于
2026年9月15日
许可协议