一、广度优先搜索(BFS)
图的广度优先类似于树的层次遍历,需要一个辅助队列和一个辅助数组;
辅助数组用来记录已经访问过的顶点 ;
如下图所示,广度优先搜索左侧图,假设从顶点2开始遍历,得到的序列是:
图,从不同的顶点出发得到的序列不一样,就算是从相同的顶点出发得到的序列也可能不一样,要看图的存储结构;
如果是非连通图,调用一次BFS函数无法实现对图的遍历;
下图中,左侧为针对非连通图的伪代码;
BFS算法效率分析:
广度优生成树、生成森林
二、深度优先搜索(DFS)
图的深度优先搜索(DFS)类似于树的先序遍历,需要一个辅助栈和一个辅助数组;
辅助数组用来记录已经访问过的顶点 ;;**
如下图所示,分别用邻接矩阵和邻接表来存储该图;
从顶点3开始深度遍历,得到的序列为:
5 7 6 2 8 9 4 1 3
伪代码实现:
DFS效率分析: