图的广度优先遍历代码
时间: 2024-10-31 12:07:27 浏览: 0
js代码-二叉树广度优先遍历
广度优先遍历(Breadth First Search, BFS)通常用于寻找两个顶点之间的最短路径,并且它按照距离顺序逐层遍历图中的节点。以下是使用C++编写的一个基本的邻接列表(Adjacency List)实现BFS的示例:
首先,假设我们有一个邻接列表结构,每个节点包含指向其邻居的链接列表:
```cpp
#include <iostream>
#include <vector>
#include <queue>
// 定义一个简单的邻接列表节点
struct Node {
int data;
std::vector<Node*> neighbors;
};
// 遍历节点
void bfs(Node* root) {
std::queue<Node*> q; // 使用队列存储待处理的节点
std::vector<bool> visited(root->data, false); // 初始化一个布尔数组记录已访问节点
q.push(root); // 将根节点入队
visited[root->data] = true;
while (!q.empty()) {
Node* current = q.front(); // 取出队首节点
q.pop();
std::cout << current->data << " "; // 输出当前节点数据
// 遍历当前节点的所有邻居
for (Node* neighbor : current->neighbors) {
if (!visited[neighbor->data]) { // 如果邻居未访问过,则访问并入队
visited[neighbor->data] = true;
q.push(neighbor);
}
}
}
}
int main() {
// 初始化图...(这里省略具体的邻接列表构造)
Node* node1 = ...;
Node* node2 = ...;
// ...
bfs(node1); // 从某个起始节点开始BFS
return 0;
}
```
在这个例子中,你需要将`node1`替换为你希望开始遍历的实际起点。BFS会按层次遍历节点,所以输出的结果通常是按距离排序的。
阅读全文