深度优先搜索-overview

深度优先搜索的实现一般有2种方式

递归

//todo

非递归-借助stack

因为栈后进先出的特点,使其很容易实现树/图的深度优先遍历。如果是BFS,那非递归经常借助queue。
整个过程可以被描述为:

  1. 根结点入栈
  2. 弹出根节点,右节点先入,其次左节点。这样,左节点总是最先被访问到,达到“深”的目的
stack.push(root)
while(stack is not empty):
      get top node
      stack.pop()
      visit top node
      stack.push(left node)
      stack.push(right node)

借助上图,可以容易理解整个过程。

posted @ 2020-06-26 16:18  real-zhouyc  阅读(120)  评论(0编辑  收藏  举报