从图中某个顶点v出发,在访问了v之后依次访问v的各个未曾访问过的邻接点,然后分别从这些邻接点出发依次访问它们的邻接点。并使得“先被访问的顶点的邻接点先于后被访问的顶点的邻接点被访问”,直至图中所有已被访问的顶点的邻接点都被访问到。如果此时图中尚有顶点未被访问,则需要另选一个未曾被访问过的顶点作为新的起始点,重复上述过程,直至图中所有顶点都被访问到为止。
正确代码为:
#include<queue>
#include<vector>
struct GraphNode
{
int label;
std::vector<GraphNode*> neighbors;
GraphNode(int x) : label(x) {
};
};
void BFS_graph(GraphNode * node, int visit[])
{
std::queue<GraphNode*> Q;
Q.push(node);
visit[node->label]= 1;
while (!Q.empty())
{
GraphNode* node = Q.front();
Q.pop();
printf("%d ",node->label);
for (int i = 0; i <node->neighbors.size(); i++)
{
if (visit[node->neighbors[i]->label]==0)
{
Q.push(node->neighbors[i]);<