本文最后更新于 479 天前,如有失效请评论区留言。
直径长度
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