DFS与BFS的区别:
DFS—类似于树的先序遍历,即距离初始顶点越远越优先访问,是一个递归算法,需要借助一个递归工作栈。
过程:
如:
BFS—类似于树的层序遍历,即距离初始顶点越近越优先访问
(Djikstra算法和Prim算法也应用了类似的思想)
过程:
广度优先遍历体现先进先出的特点,用队列实现。
如:
巧记:DFS→不撞南墙不回头
BFS→齐头并进
示例:无向图G的领接表存储顺序已给出,要求从顶点3出发,分别得到对无向图G的进行深度优先遍历和广度优先遍历所得到的顶点序列
1、深度优先遍历
2、广度优先遍历
note:
1.领接矩阵存储图的方式唯一,因此遍历序列、生成树也唯一
领接表存储图的方式不唯一,因此遍历序列、生成树也不唯一
(tip:所以题目中给的领接表存储顺序不是没有用的,它可以帮助我们确定唯一的遍历序列)
2.图的遍历和图的连通性小结:
3.不管是广度优先遍历还是深度优先遍历,最终别忘了查看一下领接矩阵存储或者邻接表存储中的顶点还有无未被访问到的结点。有的话,也要加进来。