图的深度遍历——java实现
先来一张图便于大家理解:
上图为代码执行图,总算搞清楚的深度遍历的执行。
public class BFSTest {
final static int[][] a={{0,1,0,1,0},{1,0,1,0,1},{0,1,0,0,1},{1,0,0,0,1},{0,1,1,1,0}};
/*
false表示没有被访问过
true表示被访问过
*/
boolean[] flag= new boolean[5];
public void DFSTest(int n){
System.out.println(n);
flag[n]=true;
for(int i=0;i<=4;i++){
if(a[n][i]==1&&!flag[i]){
//A:人呢?
//B:我在呀
//B:少了记录已访问的节点的东西吧~
//A:可是这个记录不能写在这个函数里面,不是每次都要调用吗
//B:那就用全局变量啊,所有递归过程中的函数都可以访问它就行啦。
//A:恩恩
//A:OK了
//A:这么简单
//B:你觉得简单的话就画个图出来看看呗
//B:画这个函数运行情况的图。
DFSTest(i);
//System.out.println(i);
}
}
}
}
希望大家可以看懂~