用java语言实现图的深度优先遍历并进行测试
时间: 2023-07-14 21:13:00 浏览: 90
java实现图的深度优先遍历
3星 · 编辑精心推荐
首先,我们需要定义一个图的类,包含顶点数目,每个点的邻接表以及一个表示是否被访问过的 boolean 数组:
```java
import java.util.LinkedList;
public class Graph {
private int V; // 顶点数目
private LinkedList<Integer> adj[]; // 邻接表
private boolean visited[]; // 用于标记是否被访问过
public Graph(int v) {
V = v;
adj = new LinkedList[v];
for (int i = 0; i < v; ++i)
adj[i] = new LinkedList();
visited = new boolean[v];
}
// 添加边
void addEdge(int v, int w) {
adj[v].add(w);
}
// 深度优先遍历
void DFS(int v) {
visited[v] = true;
System.out.print(v + " ");
for (int i : adj[v]) {
if (!visited[i])
DFS(i);
}
}
}
```
接下来,我们可以编写一个测试类来创建一个图并进行深度优先遍历:
```java
public class Test {
public static void main(String args[]) {
Graph g = new Graph(4);
g.addEdge(0, 1);
g.addEdge(0, 2);
g.addEdge(1, 2);
g.addEdge(2, 0);
g.addEdge(2, 3);
g.addEdge(3, 3);
System.out.println("深度优先遍历的结果为:");
g.DFS(2);
}
}
```
在上面的代码中,我们创建了一个具有 4 个顶点的图,并添加了 6 条边。然后我们对图进行深度优先遍历,从第二个顶点开始遍历。
输出结果为:
```
深度优先遍历的结果为:
2 0 1 3
```
这表明深度优先遍历从第二个顶点开始,依次访问了其他顶点。
阅读全文