本文主要介绍了二叉树的先序,中序,后序遍历。并且分别用如下两种方式实现:

示例中的二叉树,先序遍历的结果为:

第一步,申请一个栈,并把头节点压入。

第二步,弹出就收集答案。

第三步,第二步中弹出的节点,如果右孩子不为空,则右孩子入栈。

第四步,第二步中弹出的节点,如果左孩子不为空,则左孩子入栈。

第五步,循环执行第二步到第四步,直到栈为空。

示例中的二叉树,中序遍历的结果为:

也是申请一个栈,有如下几个步骤:

第一步,整条左边界入栈。

第三步,来到右树上执行同第一步的操作。

示例中的二叉树,后序遍历的结果为:

由于我们已经可以通过栈来实现先序遍历,即:先头,再左,再右。

而后序遍历的流程是:先左,再右,再头。

所以我们可以通过先序遍历的代码简单加工得到后序遍历的代码。

首先,我们先通过先序遍历的代码,将先序遍历加工成:先头,再右,再左。

把这个结果放入一个栈中,假设这个栈叫helper 然后将helper中的内容依次弹出,便是后序遍历的结果。