广度优先搜索算法的实现方式java
时间: 2023-08-11 13:26:19 浏览: 89
Java实现BFS算法
广度优先搜索算法可以使用队列来实现,下面是使用 Java 语言实现的示例代码:
```java
import java.util.*;
public class BFS {
public static void main(String[] args) {
// 构建图的邻接矩阵,0 表示两个节点之间没有边
int[][] graph = {
{0, 1, 1, 0, 0},
{1, 0, 0, 1, 1},
{1, 0, 0, 1, 0},
{0, 1, 1, 0, 1},
{0, 1, 0, 1, 0}
};
bfs(graph, 0);
}
public static void bfs(int[][] graph, int start) {
int n = graph.length; // 节点个数
boolean[] visited = new boolean[n]; // 记录节点是否被访问过
Queue<Integer> queue = new LinkedList<>(); // 存储待访问的节点
visited[start] = true;
queue.offer(start);
while (!queue.isEmpty()) {
int node = queue.poll();
System.out.print(node + " ");
for (int i = 0; i < n; i++) {
if (graph[node][i] == 1 && !visited[i]) {
visited[i] = true;
queue.offer(i);
}
}
}
}
}
```
该示例代码中,首先构建了一个邻接矩阵表示的图,然后调用 `bfs` 方法进行广度优先搜索。在 `bfs` 方法中,首先初始化一个队列 `queue`,将起始节点加入队列中。然后进行循环,每次从队列中取出一个节点,输出该节点,并将与其相邻的、未被访问过的节点加入队列中。这样就可以依次遍历图中所有节点,实现广度优先搜索。
阅读全文