图的DFS实现与BFS实现
图的DFS实现与BFS实现
import java.util.ArrayList;
@SuppressWarnings("all")
public class Graph {
public static void main(String[] args) {
int[][] matrix= {{ 0, 1, 0, 0, 0, 1, 1, 0, 0 }, { 1, 0, 1, 0, 0, 0, 1, 0, 1 }, { 0, 1, 0, 1, 0, 0, 0, 0, 1 }, { 0, 0, 1, 0, 1, 0, 1, 1, 1 }, { 0, 0, 0, 1, 0, 1, 0, 1, 0 }, { 1, 0, 0, 0, 1, 0, 1, 0, 0 }, { 0, 1, 0, 1, 0, 1, 0, 1, 0 }, { 0, 0, 0, 1, 1, 0, 1, 0, 0 }, { 0, 1, 1, 1, 0, 0, 0, 0, 0 }}; boolean[] flag=new boolean[matrix[0].length];
// new Graph().DFS(matrix,3, flag);
ArrayList<integer> list=new ArrayList<>();
int start=1;
list.add(start);
flag[start]=true;
Graph g=new Graph();
g.BFS(matrix, start, flag, list);
}
private void DFS(int[][] matrix,int start,boolean[] flag) {
if(flag[start]==true)
return;
flag[start]=true;
for(int i=0;i<matrix[start].length;i++) {
if(i!=start&&matrix[start][i]==1&&flag[i]==false) {
System.out.println(i);
DFS(matrix,i,flag);
}
}
}
private void BFS(int[][] matrix,int start,boolean[] flag,ArrayList<integer> list) {
while(!list.isEmpty()) {
int k=list.remove(0);
for(int i=0;i<matrix[k].length;i++) {
if(i!=k&&matrix[k][i]==1&&flag[i]==false) {
System.out.println(i);
list.add(i);
flag[i]=true;
}
}
}
}
}</integer></integer>