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 - 1543. 二叉树的直径
https://mingsm17518.github.io/2026/09/15/刷题笔记/Hot100/543. 二叉树的直径/