Question

Code
class Solution:
def treeDiameter(self, edges: List[List[int]]) -> int:
if len(edges) == 0:
return 0
adj = defaultdict(list)
for a, b in edges:
adj[a].append(b)
adj[b].append(a)
start = edges[0][0]
que = deque()
que.append(start)
visited = set()
visited.add(start)
while que:
cur = que.popleft()
start = cur
for next in adj[cur]:
if next in visited:
continue
que.append(next)
visited.add(next)
def dfs(cur, seen):
if cur in seen:
return 0
cur_max = 0
seen.add(cur)
for next in adj[cur]:
cur_max = max(cur_max, dfs(next, seen))
return cur_max + 1
return dfs(start, set()) - 1