Graph Valid Tree
Givennnodes labeled from0ton-1and a list of undirected edges (each edge is a pair of nodes), write a function to check whether these edges make up a valid tree.
Example 1:
Input:
n = 5
, and
edges = [[0,1], [0,2], [0,3], [1,4]]
Output:
trueExample 2:
Input:
n = 5,
and
edges = [[0,1], [1,2], [2,3], [1,3], [1,4]]
Output:
falseNote: you can assume that no duplicate edges will appear inedges. Since all edges are undirected,[0,1]is the same as[1,0]and thus will not appear together inedges.
分析
DFS
建图 graph = {i:[] for i in range(n)},无方向所以双向
从node 0起for loop,no cycle(dfs) and len(seen) ==n
seen这里做visited,不需要弹出因为树不回头
注意all用法。要排除grandparent!=neighbor是因为双向图,排除2个点互指的情况。
bfs
start from any node and delete every node we meet during the BFS. If there is any node left, then there is an isolated component.
注意dict pop用法,no isolated component =no cycle.
Union find
union two nodes that are already in the same group, then there is a cycle.
Last updated
Was this helpful?