图遍历:深度优先算法(DFS)

深度优先算法DFS(depth first search)

1.适用对象:树 、图。

2遍历方式:

       ①选择某结点作为此次遍历的起始结点,选择一条支路深入遍历,

       ②如果按照某条支路遍历遇到“边界结点”(即没有孩子结点的结点)时,无法在深入向下,则回溯到此“边界节点”的“父节点”,然后找这个“父节点”的另一个子节点,继续深入遍历。

       ③再次遇到“边界结点”时,重复执行②步骤。  

3.具体实例(以树型结构举例):

图遍历:深度优先算法(DFS)_第1张图片

4.实现方式(DFS算法实现可用栈来实现)。

  原理:DFS的关键是回溯、深入遍历。正好利用栈后进先出的特点实现DFS的回溯操作。

  方法:

            1步骤:选定一个顶点作为起始点,标记为已访问且放入stack,当作新的栈顶。 

             2步骤:分两种情况:
             ①如果刚放入stack的栈顶结点在图中存在未被访问的结点,则选择它的一个邻接点,标记为已访问,放入stack.(一个顶点的邻接点不止一个时,可以设定某规则,比如选择相邻结点中的一个小数)。

             ②如果刚放入stack的栈顶结点在图中的所有邻接结点全被访问过,则将它弹出stack,stack则产生新的栈顶,重复执行2.步骤。(体现了DFS的回溯操作)

你可能感兴趣的:(数据结构)