public class DfsTu {
private static int x,y;
private static int map[][]=new int[6][6];
private static int book[]=new int[6];
private static int sum=0;
public static void dfs(int num){
System.out.print(num+" ");
sum++;
if (sum==5){
return; //如果sum==5,说明已经找到了5个数字,这时候就可以跳出深度优先搜索。
}
for (int i=1;i<=x;i++){
if (map[num][i]==1&&book[i]==0){//当这个点有一个连线,并且这个点没有访问
book[i]=1;
dfs(i);
}
}
return;
}
public static void main(String[] args) {
Scanner in =new Scanner(System.in);
System.out.println("请输入图的大小:");
x=in.nextInt(); //数组的大小
y=in.nextInt();
int m;
int n;
for (int i=1;i<=x;i++){
book[i]=0;//表示这些点都没有访问
}
for (int i=1;i<=x;i++){
for (int j=1;j<=y;j++){
map[i][j]=0;//先初始化图,让每一个位置上的数为0
}
}
System.out.println("请输入图:");
for (int i=1;i<=x;i++){
m=in.nextInt();
n=in.nextInt();
map[m][n]=1; //输入图
}
//开始遍历
book[1]=1;
System.out.println("深度优先遍历的结果是:");
dfs(1);
}
}
运行结果: