Note: LeetCode gives you rooms which is already an adjacency list.
visited = [false] * n
function dfs(u, rooms):
visited[u] = true
for each v in rooms[u]:
if not visited[v]:
dfs(v, rooms)
function canVisitAllRooms(rooms):
n = rooms.length
visited = [false] * n
dfs(0, rooms)
for i from 0 to n - 1:
if not visited[i]:
return false
return true
This runs in time and uses space.