多注意解题思路,不是会了一种方法就可以。针对问题要想到用这种方法解决
解题思路:图的遍历,如果有节点遍历不到,那么说明没有连接进不去。所以遍历完经过的节点数如果不等于总的节点数那么就出错
深度优先遍历
def canVisitAllRooms(self, rooms):
"""
:type rooms: List[List[int]]
:rtype: bool
"""
visited = set()
visited.add(0)
def dfs(i):
if len(visited) == len(rooms):
return True
for j in rooms[i]:
if j not in visited:
visited.add(j)
if dfs(j):
return True
return False
return dfs(0)
广度优先遍历
def canVisitAllRooms(self, rooms):
"""
:type rooms: List[List[int]]
:rtype: bool
"""
visited = set()
queue = deque([0])
visited.add(0)
while queue:
i = queue.popleft()
for j in rooms[i]:
if j not in visited:
visited.add(j)
queue.append(j)
return len(visited) == len(rooms)