图的深度优先搜索dfs

图的深度优先搜索:

1.将最初访问的顶点压入栈;

2.只要栈中仍有顶点,就循环进行下述操作:

(1)访问栈顶部的顶点u;

(2)从当前访问的顶点u 移动至顶点v 时,将v 压入栈。如果当前顶点u 不存在未访问的相邻矩阵,则将u 从栈中删除;

 

主要的几个变量:

color[n] 用WHITE、GRAY、BLACK 中的一个来表示顶点i 的访问状态
M[n][n] 邻接矩阵, 如果存在顶点i 到顶点j 的边,则M[i][j]为true
Stack S

栈, 暂存访问过程中的顶点

其中color 数组中, 白色代表“未访问的顶点”, 灰色代表“访问过的顶点”(虽然被访问过了,但仍然可能留有通往未访问顶点的边), 黑色代表”访问结束的顶点”;

 

有俩种方法实现深度优先遍历

(1)用递归实现的深度优先搜索

(2)用栈实现的深度优先搜索

猜你喜欢

转载自www.cnblogs.com/mr-wei977955490/p/12619182.html