基于邻接矩阵的广度优先遍历
时间: 2024-05-25 16:08:41 浏览: 118
利用邻接矩阵实现图的广度优先遍历
基于邻接矩阵的广度优先遍历是一种常用的图遍历算法,用于查找图中的最短路径或者查找特定节点。它的基本思想是:从图中的某一节点开始,按照广度优先的顺序依次遍历所有节点,直到遍历完整个图。在遍历过程中,使用一个队列来存储已经遍历过的节点,以便按照宽度优先的顺序遍历它们的邻居节点。
具体实现过程如下:
1. 从图中任意一个节点开始,将该节点标记为已访问,并将其入队。
2. 取出队首节点,访问它的邻居节点,并将这些邻居节点标记为已访问并入队。
3. 重复步骤2,直到队列为空。
下面是基于邻接矩阵的广度优先遍历的示例代码(假设图中有n个节点):
```c++
void BFS(int node, int n, int** graph) {
bool* visited = new bool[n];
for (int i = 0; i < n; i++) {
visited[i] = false;
}
visited[node] = true;
queue<int> q;
q.push(node);
while (!q.empty()) {
int curNode = q.front();
q.pop();
cout << curNode << " ";
for (int i = 0; i < n; i++) {
if (graph[curNode][i] && !visited[i]) {
visited[i] = true;
q.push(i);
}
}
}
delete[] visited;
}
```
阅读全文