c#)图的深度优先搜索和广度优先搜索算法的实现
答案:2 悬赏:80 手机版
解决时间 2021-03-24 11:37
- 提问者网友:雪舞兮
- 2021-03-23 11:03
c#)图的深度优先搜索和广度优先搜索算法的实现
最佳答案
- 五星知识达人网友:蕴藏春秋
- 2021-03-23 11:27
c#)图的深度优先搜索
publicvoidDFSTraverse()//深度优先遍历
{
InitVisited();//将visited标志全部置为false
DFS(items[0]);//从第一个顶点开始遍历
}
privatevoidDFS(Vertexv)//使用递归进行深度优先遍历
{
v.visited=true;//将访问标志设为true
Console.Write(v.data+"");//访问
Nodenode=v.firstEdge;
while(node!=null)//访问此顶点的所有邻接点
{ //如果邻接点未被访问,则递归访问它的边
if(!node.adjvex.visited)
{
DFS(node.adjvex);//递归
}
node=node.next;//访问下一个邻接点
}
}
privatevoidInitVisited()//初始化visited标志
{
foreach(Vertexvinitems)
{
v.visited=false;//全部置为false
}
}
c#)图的广度优先搜索
publicvoidBFSTraverse()//广度优先遍历
{
InitVisited();//将visited标志全部置为false
BFS(items[0]);//从第一个顶点开始遍历
}
privatevoidBFS(Vertexv)//使用队列进行广度优先遍历
{ //创建一个队列
Queue>queue=newQueue>();
Console.Write(v.data+"");//访问
v.visited=true;//设置访问标志
queue.Enqueue(v);//进队
while(queue.Count>0)//只要队不为空就循环
{
Vertexw=queue.Dequeue();
Nodenode=w.firstEdge;
while(node!=null)//访问此顶点的所有邻接点
{ //如果邻接点未被访问,则递归访问它的边
if(!node.adjvex.visited)
{
Console.Write(node.adjvex.data+"");//访问
node.adjvex.visited=true;//设置访问标志
queue.Enqueue(node.adjvex);//进队
}
node=node.next;//访问下一个邻接点
}
}
}
publicvoidDFSTraverse()//深度优先遍历
{
InitVisited();//将visited标志全部置为false
DFS(items[0]);//从第一个顶点开始遍历
}
privatevoidDFS(Vertex
{
v.visited=true;//将访问标志设为true
Console.Write(v.data+"");//访问
Nodenode=v.firstEdge;
while(node!=null)//访问此顶点的所有邻接点
{ //如果邻接点未被访问,则递归访问它的边
if(!node.adjvex.visited)
{
DFS(node.adjvex);//递归
}
node=node.next;//访问下一个邻接点
}
}
privatevoidInitVisited()//初始化visited标志
{
foreach(Vertex
{
v.visited=false;//全部置为false
}
}
c#)图的广度优先搜索
publicvoidBFSTraverse()//广度优先遍历
{
InitVisited();//将visited标志全部置为false
BFS(items[0]);//从第一个顶点开始遍历
}
privatevoidBFS(Vertex
{ //创建一个队列
Queue
Console.Write(v.data+"");//访问
v.visited=true;//设置访问标志
queue.Enqueue(v);//进队
while(queue.Count>0)//只要队不为空就循环
{
Vertex
Nodenode=w.firstEdge;
while(node!=null)//访问此顶点的所有邻接点
{ //如果邻接点未被访问,则递归访问它的边
if(!node.adjvex.visited)
{
Console.Write(node.adjvex.data+"");//访问
node.adjvex.visited=true;//设置访问标志
queue.Enqueue(node.adjvex);//进队
}
node=node.next;//访问下一个邻接点
}
}
}
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯