public class MyGraph {
public static void main(String[] args){
boolean[] bo = new boolean[7];
char[] node = {'A','B','C','D','E','F','G'};
int[][] arrary = {{0,1,0,0,0,0,0},
{0,0,1,0,1,1,0},
{0,0,0,0,1,0,0},
{0,0,1,0,0,0,0},
{0,0,0,1,0,0,0},
{0,0,0,0,0,0,1},
{0,0,0,0,0,0,0}
};
MGraph mg = new MGraph(node,arrary);
mg.initbo();
mg.DFS(0);
}
}
import java.util.LinkedList;
import java.util.Queue;
public class MGraph {
char[] node;
int[][] arrary;
boolean[] bo = new boolean[7];
Queue qu = new LinkedList();
public MGraph(char[] node,int[][] arrary){
if(arrary.length!=node.length){
System.out.print("error");
}
if(arrary.length!=arrary[0].length){
System.out.print("error");
}
this.node=node;
this.arrary=arrary;
}
public void initbo(){
for (int j = 0;j<node.length;j++){
bo[j] = false;
}
}
public void BFS(int i){
bo[i] = true;
System.out.print(node[i]);
for(int j=0;j<node.length;j++){
if(arrary[i][j] == 1 && !qu.contains(j)){
qu.offer(j);
}
}
if(!qu.isEmpty()) {
int p = (int) qu.poll();
if(!bo[p]) {
BFS(p);
}
}
}
// public void DFS1(int i) {
// bo[i] = true;
// System.out.print(node[i]);
// int j;
// for(j=0;j<node.length;j++){
// if(arrary[i][j] == 1){
// qu.offer(j);
// }
// }
// int t = (int)qu.poll();
// DFS(t);
// if(bo[t]==false){
// DFS(t);
// }
//
// }
public void DFS(int i) {
//首先访问该结点,在控制台打印出来
System.out.print(node[i] + " ");
//置该结点为已访问
bo[i] = true;
for (int j = 0; j < node.length; j++) {
if (arrary[i][j] == 1 && bo[j] ==false) {
DFS(j);
}
}
}
}