如何实现广度优先遍历
时间: 2024-06-20 16:03:51 浏览: 81
C# 广度优先遍历(BFS)算法实现
5星 · 资源好评率100%
广度优先遍历(BFS)是一种图形搜索算法,它遵循“先进先出”的原则,从图的起始点开始遍历,首先遍历起始点的所有邻居节点,然后遍历这些邻居节点的邻居节点,以此类推,直到遍历完整个图。
具体实现过程如下:
1. 创建一个队列,将起始点入队;
2. 将起始点标记为已访问;
3. 从队列中取出一个节点,遍历其所有未被访问过的邻居节点,将这些邻居节点依次入队,并标记为已访问;
4. 重复步骤3,直到队列为空。
下面是一个示例代码:
```
void BFS(Graph G, int start)
{
bool visited[G.numVertices] = {false}; // 标记所有节点是否已被访问
queue<int> q; // 创建一个队列
q.push(start); // 起始节点入队
visited[start] = true; // 标记起始节点已被访问
while (!q.empty())
{
int curr = q.front(); // 取出队首节点
q.pop();
// 遍历当前节点的所有未被访问过的邻居节点
for (int neighbor : G.getNeighbors(curr))
{
if (!visited[neighbor])
{
q.push(neighbor); // 邻居节点入队
visited[neighbor] = true; // 标记邻居节点已被访问
}
}
}
}
```
阅读全文