你好,帮我写个java代码,实现BFS算法
时间: 2023-06-23 12:08:26 浏览: 109
landscape:景观BFS
好的,以下是一个简单的Java代码实现BFS算法:
```java
import java.util.*;
public class BFS {
public void bfs(int[][] graph, int start) {
Queue<Integer> queue = new LinkedList<>();
boolean[] visited = new boolean[graph.length];
visited[start] = true;
queue.offer(start);
while (!queue.isEmpty()) {
int curr = queue.poll();
System.out.print(curr + " ");
for (int i = 0; i < graph.length; i++) {
if (graph[curr][i] == 1 && !visited[i]) {
visited[i] = true;
queue.offer(i);
}
}
}
}
public static void main(String[] args) {
int[][] graph = {{0,1,1,0,0},{1,0,0,1,0},{1,0,0,1,0},{0,1,1,0,1},{0,0,0,1,0}};
BFS bfs = new BFS();
bfs.bfs(graph, 0);
}
}
```
这里我们使用了一个邻接矩阵来表示图结构,其中0代表没有边,1代表有边。在BFS方法中,我们使用了一个队列来存储遍历到的节点,同时使用一个布尔数组来标记节点是否已经被访问过。我们从起始节点开始遍历,将其标记为已访问,并加入队列中。然后不断取出队列中的节点,访问其未被访问过的邻居节点,并将其标记为已访问并加入队列中。重复这个过程直到队列为空,即完成了整个图的遍历。
阅读全文