邻接矩阵的实现
boolean[] isVisited ; //记录顶点是否已被访问过 void dfs(Graph<?> G) { //开始时所有顶点均未访问 isVisited = new boolean[G.getNumOfVertexes()]; for(int i = 0;i < isVisited.length; i++) isVisited[i] = false; //遍历所有顶点,进行DFS for(int i = 0; i < G.getNumOfVertexes(); i++) if( !isVisited[i]) dfs(G, i); } //DFS递归算法部分 void dfs(Graph<?> G, int i) { //访问该顶点 System.out.println(G.getValueByIndex(i).toString()); //标记为已访问 isVisited[i] = true; //访问下个邻接顶点 int j = 0; for(j = 0; j < G.getNumOfVertexes(); j++) if(G.edges[i][j] != Graph.INFINITY && G.edges[i][j] != 0 && !isVisited[j]) //有边且未被访问 dfs(G, j); }