【囤】图的深度优先遍历和广度优先遍历

//深度优先遍历(递归)
void DFS(int u)
{
    flag[u]=true;
    cout<<u<<" ";
    for(int i=0; i<n; i++)
    {
        if(flag[i]==false&&G[u][i]==1)
        {
            DFS(i);
        }
    }
}

//广度优先遍历
void BFS(int u)
{
	//开始的点标明访问过
    flag[u]=true;
    queue<int> q;
    q.push(u);
    //只要队列不空,就出队,出队之前检查这个点有没有连通别的点且那个点没被访问过
    while(!q.empty())
    {
        for(int i=0; i<n; i++)
        {
            if(G[q.front()][i]==1&&flag[i]==false)
            {
                q.push(i);
                flag[i]=true;
            }
        }
        cout<<q.front()<<" ";
        q.pop();
    }

}

全部评论

相关推荐

1 收藏 评论
分享
牛客网
牛客企业服务