写一段java的深度优先遍历代码
时间: 2023-10-17 21:05:41 浏览: 89
以下是Java的深度优先遍历代码示例:
```
import java.util.*;
public class Graph {
private int V; // 顶点数
private LinkedList<Integer> adj[]; // 邻接表
public Graph(int v) {
V = v;
adj = new LinkedList[v];
for (int i=0; i<v; i++) {
adj[i] = new LinkedList();
}
}
public void addEdge(int v, int w) {
adj[v].add(w);
}
public void DFS(int v, boolean visited[]) {
visited[v] = true;
System.out.print(v + " ");
Iterator<Integer> i = adj[v].listIterator();
while (i.hasNext()) {
int n = i.next();
if (!visited[n]) {
DFS(n, visited);
}
}
}
public void DFS(int v) {
boolean visited[] = new boolean[V];
DFS(v, visited);
}
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("Following is Depth First Traversal " + "(starting from vertex 2)");
g.DFS(2);
}
}
```
上述代码实现了一个基本的图类,其中包含了添加边、深度优先遍历等方法。在 `DFS` 方法中,首先标记当前节点为访问过的,然后输出该节点的值。接着,遍历该节点的所有相邻节点,如果该节点没有被访问过,则递归调用 `DFS` 方法,访问该节点。最后,通过 `DFS` 方法的另一个重载方法,传入起始节点和一个 `visited` 数组,实现深度优先遍历。
在 `main` 方法中,首先创建一个 `Graph` 类实例,并添加一些边。然后,调用 `DFS` 方法,传入起始节点 2,输出深度优先遍历的结果。
阅读全文