java邻接矩阵dfs
时间: 2024-03-03 10:45:48 浏览: 120
DFS-邻接矩阵.cpp
邻接矩阵是一种常用的图的表示方法,它使用一个二维数组来表示图中各个节点之间的连接关系。在邻接矩阵中,行和列分别代表图中的节点,而矩阵中的元素表示节点之间的边的存在与否。
DFS(深度优先搜索)是一种图遍历算法,它从图的某个节点开始,沿着一条路径尽可能深入地访问节点,直到无法继续深入为止,然后回溯到上一个节点,继续访问其他未被访问过的节点,直到所有节点都被访问过为止。
在Java中,可以使用邻接矩阵来实现DFS算法。下面是一个简单的Java代码示例:
```java
import java.util.Stack;
public class Graph {
private int[][] adjacencyMatrix;
private int numVertices;
public Graph(int numVertices) {
this.numVertices = numVertices;
adjacencyMatrix = new int[numVertices][numVertices];
}
public void addEdge(int source, int destination) {
adjacencyMatrix[source][destination] = 1;
adjacencyMatrix[destination][source] = 1;
}
public void dfs(int startVertex) {
boolean[] visited = new boolean[numVertices];
Stack<Integer> stack = new Stack<>();
stack.push(startVertex);
while (!stack.isEmpty()) {
int currentVertex = stack.pop();
System.out.print(currentVertex + " ");
visited[currentVertex] = true;
for (int i = 0; i < numVertices; i++) {
if (adjacencyMatrix[currentVertex][i] == 1 && !visited[i]) {
stack.push(i);
}
}
}
}
public static void main(String[] args) {
Graph graph = new Graph(5);
graph.addEdge(0, 1);
graph.addEdge(0, 2);
graph.addEdge(1, 3);
graph.addEdge(1, 4);
System.out.println("DFS traversal starting from vertex 0:");
graph.dfs(0);
}
}
```
上述代码中,Graph类表示图,使用邻接矩阵来存储图的连接关系。addEdge方法用于添加边,dfs方法用于进行深度优先搜索遍历。在main方法中,创建一个图对象,并添加边,然后调用dfs方法进行遍历。
希望以上代码能够帮助到你!
阅读全文