package com.xjj.Ah;
import java.util.Scanner;
/*----图的遍历--深度优先遍历----
* 1. 深度优先遍历:首先从一个未走过的顶点作为起点,沿着该点去尝试访问其他未访问的点...
* 在以该点作为新的起点,继续访问其他顶点...
*
* 3.基本模型
* void dfs(int start)
* {
* 标记该点
* 如果所有点访问完返回(return)
* 访问所有点
* for(int i = 1; i <= n; i++)
* {
* 判断(if)是否符合要求;
* 继续下一步 dfs(step+1);
* }
* 返回(return)
* }
* */
public class Ah_5_1 {
static int N = 0, M = 0; //点,边 行坐标代表该点,列坐标代表其对其他点
static int[][] a = new int[51][51]; //保存图,点边集
static int[] book = new int[51]; //因为只涉及到点就行,故一维数组
static int sum = 0;
public void dfs(int start){
sum++;
book[start] = 1;
System.out.print(start + " ");
if (sum == N) { //所有定点访问完
return;
}
for(int i = 1; i <= N; i++){
//该两点间有路径且未被访问
if (a[start][i] == 1 && book[i] == 0) {
dfs(i); //深度下一顶点
}
}
return; //该点对其余点都访问了就返回上一定点
}
public static void main(String[] args) {
System.out.println("输入图的顶点数及边数:");
Scanner scanner = new Scanner(System.in);
N = scanner.nextInt();
M = scanner.nextInt();
for(int i = 1; i <= M; i++){
int x = scanner.nextInt();
int y = scanner.nextInt();
a[x][y] = 1;
a[y][x] = 1;
}
Ah_5_1 ah = new Ah_5_1();
ah.dfs(1);
}
}
图的遍历--深度优先遍历
原文作者:数据结构之图
原文地址: https://blog.csdn.net/jiejiexiao/article/details/79205138
本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
原文地址: https://blog.csdn.net/jiejiexiao/article/details/79205138
本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。