<算法基础>图的三种遍历方法————DFS,BFS,Topological sort

 

1.BFS(Breadth First Search)

  具体实现的时候用栈来实现更简单。从start point开始,一圈圈向外。

  对于例图的访问顺序是——s,a,c,d,e,b,g,f

 

2.DFS(Depth First Search)

DFS(s){
首先访问定点s;
if(s尚有未被访问的邻居)
{
任取其一u,递归执行DFS(u);
}
else{return;}

}

  对于例图的访问顺序是——s,a,e,f,g,b,c,d

  

3.Topological Sort

仅仅用于有向无环图。

从AOV网中选择一个入度为0的顶点输出,然后删除此顶点,并删除以此顶点为尾的弧,重复操作指导输出全部顶点或者AOV网中不存在入度为0的顶点为止

对于上面这个有向图,只有出度没有入度的节点是a,我们以a为起点。
开始!
a入队列。                 a
a弹出,c,e,s压入。————ces为a的出度 s,e,c
c弹出,      ————c没有出度     s,e
e弹出,f,k压入。 ————fk为e的出度    k,f,s
s弹出,d压入。 ————d为s的出度     d,k,f
f弹出,      ————f没有出度     d,k
k弹出,g压入。   ————g为k的出度    g,d
d弹出,b压入。   ————b为d的出度    b,g
g弹出,      ————g没有出度     b
b弹出,      ————b没有出度     NULL
结束!

节点弹出队列的先后顺序就是遍历访问的先后顺序,即
——>a,c,e,s,f,k,d,g,b

posted @ 2019-12-29 16:05  dynmi  阅读(355)  评论(0编辑  收藏  举报