261. Graph Valid Tree
You have a graph of n
nodes labeled from 0
to n - 1
. You are given an integer n and a list of edges
where edges[i] = [ai, bi]
indicates that there is an undirected edge between nodes ai
and bi
in the graph.
Return true
if the edges of the given graph make up a valid tree, and false
otherwise.
def validTree1(n: int, edges: List[List[int]]):
visited = set()
def hasCycle(node, cameFrom):
if node in visited:
return True
visited.add(node)
for nei in edgeMap[node]:
if nei != cameFrom:
detected = hasCycle(nei, node)
if detected:
return True
return False
edgeMap = {}
for i in range(n):
edgeMap[i] = []
for e in edges:
edgeMap[e[0]].append(e[1])
edgeMap[e[1]].append(e[0])
return not hasCycle(0, -1) and len(visited) == n
def validTree(n: int, edges: List[List[int]]):
if len(edges) != n - 1:
return False
visited = set()
def dfs(node):
if node in visited:
return
visited.add(node)
for neighbour in edgeMap[node]:
dfs(neighbour)
edgeMap = {}
for i in range(n):
edgeMap[i] = []
for e in edges:
edgeMap[e[0]].append(e[1])
edgeMap[e[1]].append(e[0])
dfs(0)
return len(visited) == n
Comments
Post a Comment