310. Minimum Height Trees
solution
class Solution:
def findMinHeightTrees(self, n: int, edges: List[List[int]]) -> List[int]:
graph = collections.defaultdict(list)
for x, y in edges:
graph[x].append(y)
graph[y].append(x)
leaves = [x for x in range(n) if len(graph[x]) <= 1]
while len(graph) > 2:
new_leaves = []
for leaf in leaves:
neighbor = graph[leaf].pop()
del graph[leaf]
graph[neighbor].remove(leaf)
if len(graph[neighbor]) == 1:
new_leaves.append(neighbor)
leaves = new_leaves
return leavesLast updated