深度优先搜索过程:
深度优先搜索DFS(Depth-First-Search)是一种沿着树的深的节点遍历的方式,尽可能的搜索更深的节点的策略。如下图是一个无向图,如果从A点发起深度优先搜索(以下的访问次序并不是唯一的,第二个点既可以是B也可以是C,D),可以得到如下的一个访问过程:A→B→E分支结束,重新回到A,A→C→F→H→G→D没有路,最终回到A,A也没有未访问的相邻节点,本次搜索结束。深度优先搜索的特点:每次深度优先搜索的结果必然是图的一个连通分量.深度优先搜索可以从多个节点发起。
右图首先从一个未被遍历过的顶点,例如从A开始,由于A作为第一个被访问的节点,所以,需要标记A的状态为被访问过;然后遍历与A相邻的节点,例如访问B,并做标记,然后访问与B相邻接点,例如D做标记,然后F,然后E ;当继续遍历E的邻接点时,根据之前做的标记显示,所有邻接点都被访问过了。
此时,从E回退到F,看F是否有未被访问过的邻接点,如果没有,继续回退到D,B,A;通过查看A,找到一个未被访问过的顶点C,继续遍历,然后访问C邻接G,然后H;由于H没有未被访问的邻接点,所有回退到G,继续回退至C,最后到达A,发现没有未被访问的;最后一步需要判断是否所有顶点都被访问,如果还有没被访问的,以未被访问的顶点为第一个顶点,继续依照上边的方式进行遍历。
根据上边的过程,可以得到通过深度优先搜索获得的顶点的遍历次序为:A→B→D→F→E→C→G→H