树的深度优先遍历-栈实现

111 阅读1分钟

深度优先遍历

DFS,Depth First Search

从初始访问节点出发,初始访问节点可能有多个 邻接节点(直连),深度优先遍历的策略为:

  • 首先访问第一个邻接节点
  • 然后以这个 被访问的邻接节点作为初始节点
  • 然后循环这个操作。

栈实现

采用栈实现树的深度优先遍历的步骤:

  1. 开始先将根节点放入栈中
  2. 从栈中取出站顶的元素,进行操作。
  3. 将取出的元素的子节点放入栈中。(因为要先操作左节点,此处将左节点放在右节点的上边;同理,如果是右遍历,就将有节点放在左节点的上边)
  4. 重复2、3步骤,直到栈中元素数量为0 。

通过实例理解该步骤:

image.png

对该二叉树进行深度遍历,借助栈。按照先左后右的方法,其栈中的数据变化如下:

image.png