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