广度优先遍历算法 连通图的广度优先遍历函数
时间: 2023-12-23 11:27:48 浏览: 98
广度优先遍历(BFS)是一种图的遍历算法,用于遍历图中的所有节点。它从图中的一个起始节点开始,逐层遍历其相邻节点,直到遍历完所有节点为止。
下面是一个使用Java实现广度优先遍历的示例代码:
```java
import java.util.LinkedList;
import java.util.Queue;
public class BFS {
public void breadthFirstSearch(Graph graph, int startNode) {
boolean[] visited = new boolean[graph.getNumOfNodes()];
Queue<Integer> queue = new LinkedList<>();
visited[startNode] = true;
queue.add(startNode);
while (!queue.isEmpty()) {
int currentNode = queue.poll();
System.out.print(currentNode + " ");
LinkedList<Integer> adjacentNodes = graph.getAdjacentNodes(currentNode);
for (int node : adjacentNodes) {
if (!visited[node]) {
visited[node] = true;
queue.add(node);
}
}
}
}
}
```
在上面的代码中,`Graph`是一个表示图的类,`getNumOfNodes()`方法返回图中节点的数量,`getAdjacentNodes(int node)`方法返回与给定节点相邻的节点列表。
使用该算法,你可以通过调用`breadthFirstSearch()`方法来进行广度优先遍历。你需要传入一个`Graph`对象和一个起始节点作为参数。
请注意,上述代码仅仅是一个示例,你需要根据你的具体需求进行适当的修改。
阅读全文