Leetcode快速入门之第六节课: 利用栈和队列实现树的遍历(前序、中序、后序、层次)

1. 前言

  和几个算法交流群的朋友交流,发现面试中经常考察非递归遍历树。具体来说即为以下四种遍历方式:

  • 前序遍历
  • 中序遍历
  • 后序遍历
  • 层次遍历

  甚为悲惨的是,其中一位朋友因为没有答上而被面试官叫停了面试。所以为了帮助大家拿到满意的offer,所以特意写下了该篇博客。

2. 树的深度优先搜索

  利用栈模拟递归是实现非递归方式遍历树的核心方法之一。那该如何进行实现呢?首先要明确栈的特点是:先进后出。栈里面存放的是函数调用列表,压栈和增加函数调用的列表是对应的,出栈和执行函数是对应的。所以很关键的一点是设计好压栈和出栈的顺序。举例来说,假设以下三个函数是要顺序执行的函数:

函数1
函数2
函数3

  那么压栈和出栈的顺序应该是什么样呢?比如,压栈的顺序应该和函

猜你喜欢

转载自blog.csdn.net/herosunly/article/details/118541078