本文主要介绍了二叉树的先序,中序,后序遍历。并且分别用如下两种方式实现:
示例中的二叉树,先序遍历的结果为:
第一步,申请一个栈,并把头节点压入。
第二步,弹出就收集答案。
第三步,第二步中弹出的节点,如果右孩子不为空,则右孩子入栈。
第四步,第二步中弹出的节点,如果左孩子不为空,则左孩子入栈。
第五步,循环执行第二步到第四步,直到栈为空。
示例中的二叉树,中序遍历的结果为:
也是申请一个栈,有如下几个步骤:
第一步,整条左边界入栈。
第三步,来到右树上执行同第一步的操作。
示例中的二叉树,后序遍历的结果为:
由于我们已经可以通过栈来实现先序遍历,即:先头,再左,再右。
而后序遍历的流程是:先左,再右,再头。
所以我们可以通过先序遍历的代码简单加工得到后序遍历的代码。
首先,我们先通过先序遍历的代码,将先序遍历加工成:先头,再右,再左。
把这个结果放入一个栈中,假设这个栈叫helper 然后将helper中的内容依次弹出,便是后序遍历的结果。