广度优先生成树怎么得到?知道如何广度搜索,但生成树的边怎么来的?
答案:2 悬赏:80 手机版
解决时间 2021-12-31 19:14
- 提问者网友:暗中人
- 2021-12-31 11:33
广度优先生成树怎么得到?知道如何广度搜索,但生成树的边怎么来的?
最佳答案
- 五星知识达人网友:从此江山别
- 2021-12-31 12:05
#define True 1
#define False 0
int visited[MAX_VERTEX_NUM];
void BreadthFirstSearch(Graph g,int v0)
{
int x,w,m;
InitQueue(&Q);
EnterQueue(&Q,v0);
while(!Empty(Q))
{
DeleteQueue(&Q,&x);
if(!visited[x])
{
visit(x);
visited[x]=True;
}
w=FirstAdjVertex(g,x);
while((w!=-1)&&!visited[w])
{
EnterQueue(&Q,w);
w=NextAdjVertex(g,x,w);
}
}
}
这个是广度优先搜索图,你可以看看,广度的话就是首先遍历顶点的邻接顶点,然后再从第一个邻接顶点继续遍历所没有访问过的它本身的邻接顶点,如此继续循环
#define False 0
int visited[MAX_VERTEX_NUM];
void BreadthFirstSearch(Graph g,int v0)
{
int x,w,m;
InitQueue(&Q);
EnterQueue(&Q,v0);
while(!Empty(Q))
{
DeleteQueue(&Q,&x);
if(!visited[x])
{
visit(x);
visited[x]=True;
}
w=FirstAdjVertex(g,x);
while((w!=-1)&&!visited[w])
{
EnterQueue(&Q,w);
w=NextAdjVertex(g,x,w);
}
}
}
这个是广度优先搜索图,你可以看看,广度的话就是首先遍历顶点的邻接顶点,然后再从第一个邻接顶点继续遍历所没有访问过的它本身的邻接顶点,如此继续循环
全部回答
- 1楼网友:傲气稳了全场
- 2021-12-31 12:46
首先要理解什么是深度遍历:从1 开始,1连接7,7连接3,3连接4,4连接5,5连接6,6连接2(1已经连过了)(2连接了3,7,但是3和7都已经连过,所以回到上一级6,6的连接是1,2都已经连过,所以再回到上一级5)5连接10 ,(10连接1,6都已经连过了,所以回到上一级5,但是5的所有连接点都连过了,所以回到上一级4)4连接9,(9连接5,10都已经连过了,所以回到上一级4,4也已经练完了,所以再回到上一级3)3连接8,至此连完。ps:深度遍历结果1,7,3,4,5,6,2,10,9,8
广度遍历:从1开始,连接7和9,下一个是7,连接3和10 ,下一个是9,连接5,下一个是3,连接4和8,下一个是10 连接6,下一个是5,没有什么连接的,下一个是4,没有什么连接的,下一个是8,没有什么连接的,下一个是6,连接2,至此连完。ps:广度遍历结果1,7,9,3,10,5,4,8,6,2
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯