题目
给定一个有向图,判断能否从 0 开始,遍历到所有的节点。
(总结一下有向图的深度优先遍历)
class solution{
boolean[] visit;
int num;
public boolean canVisitAllRooms(List<List<Integer>> rooms) {
int n = rooms.size() //房间的个数
visit = new boolean[n];
num = 0; // 记录访问个数
// 从 0 开始出发进行深度优先搜索
dfs(rooms,0);
// 成功的条件
return num == n;
}
public void dfs(List<List<Integer>> rooms,int x){
visit[x] = true;
num++;
List<Integer> l = rooms.get(x);
for(Integer next:l){
if(!visit[next]){
dfs(rooms,next);
}
}
}
}