A tree has barely enough edges to remain connected. So, with nodes there must be
edges and all nodes must belong to a single connected component. We use DFS for the connected component part.
Time: , space:
class Solution:
def get_adj_list(self, n, edges) -> Dict[int, Set[int]]:
adj_list = {u: set() for u in range(n)}
for u, v in edges:
adj_list[u].add(v)
adj_list[v].add(u)
return adj_list
def explore(self, u, adj_list, visited):
visited.add(u)
for v in adj_list[u]:
if v in visited:
continue
self.explore(v, adj_list, visited)
def validTree(self, n: int, edges: List[List[int]]) -> bool:
if len(edges) != n-1:
return False
adj_list = self.get_adj_list(n, edges)
visited = set()
self.explore(0, adj_list, visited)
return len(visited) == n
Leave a comment