深度优先遍历(Depth-First Search)
类似于对树的先序遍历
遍历规则:首先访问初始点vi ,并将其标记为已访问过,然后从vi 的任一未被访问过的邻接点(有向图的入边邻接点除外,下同)w出发进行深度优先遍历,当vi的所有邻接点均被访问过时,则回退到已被访问的顶点序列中最后一个拥有未被访问的邻接点的顶点vk,从vk的未被访问过的邻接点出发进行深度优先遍历,直到回退到初始点并且没有未被访问的邻接点未知。
图的深度优先遍历的过程是递归的,从初始点vi出发递归地深度优先遍历图的算法思想为:
(1)访问顶点vi,并将其编辑为已访问;
(2)取vi的第一个邻接点并赋予值给w;
(3)如果w存在,重复执行步骤①和②:
① 如果w未被访问,则从顶点w出发进行深度优先遍历;
② 取vi的下一个邻接点并赋予值给w。
1.邻接矩阵储存结构下的深度优先遍历
2.邻接表存储结构下的深度优先遍历