大家好,我是herosunly。985院校硕士毕业,现担任算法研究员一职,热衷于机器学习算法研究与应用。曾获得阿里云天池比赛第一名,CCF比赛第二名,科大讯飞比赛第三名。拥有多项发明专利。对机器学习和深度学习拥有自己独到的见解。曾经辅导过若干个非计算机专业的学生进入到算法行业就业。希望和大家一起成长进步。
本文主要介绍了Leetcode快速入门之第六节课: 利用栈和队列实现树的遍历(前序、中序、后序、层次)希望能对学习Leetcode的同学们有所帮助。
1. 前言
和几个算法交流群的朋友交流,发现面试中经常考察非递归遍历树。具体来说即为以下四种遍历方式:
- 前序遍历
- 中序遍历
- 后序遍历
- 层次遍历
甚为悲惨的是,其中一位朋友因为没有答上而被面试官叫停了面试。所以为了帮助大家拿到满意的offer,所以特意写下了该篇博客。
2. 树的深度优先搜索
利用栈模拟递归是实现非递归方式遍历树的核心方法之一。那该如何进行实现呢?首先要明确栈的特点是:先进后出。栈里面存放的是函数调