/**
0 1 0 1 0 0
0 0 0 0 1 0
0 0 0 0 1 1
0 1 0 0 0 0
0 0 0 1 0 0
0 0 0 0 0 1
假设初始状态是图中所有顶点都未被访问,则深度优先搜索方法的步骤是:
1)选取图中某一顶点Vi为出发点,访问并标记该顶点;
2)以Vi为当前顶点,依次搜索Vi的每个邻接点Vj,若Vj未被访问过,则访问和标记邻接点Vj,若Vj已被访问过,则搜索Vi的下一个邻接点;
3)以Vj为当前顶点,重复步骤2),直到图中和Vi有路径相通的顶点都被访问为止;
4)若图中尚有顶点未被访问过(非连通的情况下),则可任取图中的一个未被访问的顶点作为出发点,重复上述过程,直至图中所有顶点都被访问。
*/
package dfs;
/**
* @author hanhexin
*
*/
public class DFS {
/**
* @param args
*/
static int[][] table = { { 0, 1, 0, 1, 0, 0 }, { 0, 0, 0, 0, 1, 0 },
{ 0, 0, 0, 0, 1, 1 }, { 0, 1, 0, 0, 0, 0 }, { 0, 0, 0, 1, 0, 0 },
{ 0, 0, 0, 0, 0, 1 } };
static boolean[] visit = new boolean[6];
public static void main(String[] args) {
dfs();
}
public static void dfs() {
for (int i = 0; i < visit.length; i++) {
visit[i] = false;
}
for (int i = 0; i < visit.length; i++) {
if (visit[i] == false) {
dfs_visit(i);
}
}
}
public static void dfs_visit(int row) {
if (visit[row] == false) {
visit[row] = true;
System.out.println(row);
for (int i = 0; i < table.length; i++) {
if (table[row][i] != 0) {
dfs_visit(i);
break;
}
}
}
}
}
简单DFS递归法
最新推荐文章于 2023-08-01 10:46:12 发布