「栈」专题 2:二叉树的三种非递归实现
对于递归而言,简单来说就是自己调用自己,但是再一次调用自己,又有不一样的地方,具体表现就是参数不同。
通常我们写递归程序的时候,是不会直接使用栈的。因为操作系统在执行递归程序的时候,就帮助我们使用了栈。我们可以把操作系统为了帮助我们执行递归程序而使用的栈,称作“系统栈”。
从操作系统的角度来看,实现递归的手段,恰恰是使用了栈。对于栈的熟练掌握,可以加深我们对递归问题的理解。
之后的若干章节,我们还会多次使用递归。
递归在算法的学习中是举足轻重的。所以,我们十分有必要学习好栈这种数据结构。
对于递归的学习,我们使用”二叉树”作为入手点。以二叉树中的算法来理解递归。因为二叉树的定义就是通过递归定义的。
二叉树的遍历有三种遍历:1、前序遍历;2、中序遍历;3、后序遍历。分别就对应了 LeetCode 第 144 题、第 94 题、第 145 题。
关于二叉树的遍历分为以下四种:先序遍历、中序遍历、后序遍历、层序遍历。其中先序、中序、后序遍历又分别有递归方式和非递归方式。