1.思路
2.代码
class DiGraph
{
private int[][] matrix = {{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}};
private boolean[] isVisited;
public int[][] getMatrix() {
return matrix;
}
public boolean[] getIsVisited() {
return isVisited;
}
public void setIsVisitednull(boolean[] isVisited) {
this.isVisited = isVisited;
}
public DiGraph(int n)
{
isVisited = new boolean[n];
}
}
private static void DFSTraverse()
{
DiGraph graph = new DiGraph(6);
for(int i=0; i<6; i++)
DFS(i,graph);
}
private static void DFS(int v,DiGraph graph)
{
boolean[] isVisited = graph.getIsVisited();
int[][] matrix = graph.getMatrix();
if(isVisited[v]==true)
return;
else
{
isVisited[v] = true;
System.out.println(v+1);
for(int i=0; i<6; i++)
{
if(matrix[v][i]!=0 && !isVisited[i])
DFS(i,graph);
}
}
}
如图:
结果为:
1
2
5
4
3
6