本文最后更新于 198 天前,如有失效请评论区留言。
直径长度
def diameter(self, edges: List[List[int]]) -> int:
g = [[] for _ in range(len(edges) + 1)]
for x, y in edges:
g[x].append(y)
g[y].append(x)
res = 0 # 用于存储树的直径
def dfs(x: int, fa: int) -> int:
nonlocal res
max_len = 0 # 当前节点 x 的最长路径长度
for y in g[x]:
if y != fa:
sub_len = dfs(y, x) + 1
res = max(res, max_len + sub_len) # 更新树的直径
max_len = max(max_len, sub_len) # 更新当前节点的最长路径长度
return max_len
dfs(0, -1)
return res