题目
思路
1.判断边的个数是否比结点个数少1个。
2.判断图是否连通。
代码
class Solution:
"""
@param: n: An integer
@param: edges: a list of undirected edges
@return: true if it's a valid tree, or false
"""
def validTree(self, n, edges):
# write your code here
if (n -1) != len(edges):
return False
if n == 1:
return True
graph = {}
for edge in edges:
if edge[0] in graph:
graph[edge[0]].append(edge[1])
else:
graph[edge[0]] = []
graph[edge[0]].append(edge[1])
if edge[1] in graph:
graph[edge[1]].append(edge[0])
else:
graph[edge[1]] = []
graph[edge[1]].append(edge[0])
queue = []
visited = {}
queue.append(edges[0][0])
visited[edges[0][0]] = 1
while queue:
node = queue[0]
queue.pop(0)
if node in graph:
for edge in graph[node]:
if edge not in visited:
queue.append(edge)
visited[edge] = 1
return n == len(visited)