二叉树前序中序和后序遍历的非递归实现

Posted phoenix tree

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了二叉树前序中序和后序遍历的非递归实现相关的知识,希望对你有一定的参考价值。

1 二叉树的前序遍历

对于每棵子树,先处理根,然后处理左子树,最后处理右子树。根最先访问,所以是前序遍历。

2 二叉树的中序遍历

对于每棵子树,先处理左子树,然后处理根,最后处理右子树。根中间访问,所以是中序遍历。

3 二叉树的后序遍历

对于每棵子树,先处理左子树,然后处理右子树,最后处理根。根最后访问,所以是后序遍历。

4 二叉树后序遍历的非递归实现

 如果pre为NULL:

     左右儿子都是NULL,那么自己出栈;

     如果左儿子为NULL,右儿子不为NULL,右儿子进栈;

     如果左儿子不为NULL,那么左儿子进栈;

 如果pre不为NULL:

     如果左右儿子都是NULL,那么自己出栈;

     如果左儿子不为NULL,右儿子为NULL:

          如果左儿子等于pre,那么自己出栈;

          如果左儿子不等于pre,那么左儿子进栈;

     如果左儿子为NULL,右儿子不为NULL:

          如果右儿子等于pre,那么自己出栈;

          如果右儿子不等于pre,那么右儿子进栈

     如果左右儿子都不是NULL:

          如果pre等于左儿子,那么右儿子进栈;

          如果pre等于右儿子,那么自己出栈;

          如果pre即不等于左儿子,也不等于右儿子,左儿子进栈。

 

以上是关于二叉树前序中序和后序遍历的非递归实现的主要内容,如果未能解决你的问题,请参考以下文章

二叉树前序中序后序遍历(非递归统一解法)

创建二叉树非递归完成对二叉树的先序和后序遍历并遍历输出每一层的结点数查找结点P 和结点Q的最近共同祖先

二叉树的前序中序和后续遍历及应用场景

二叉树的中序和后序遍历的非递归实现

二叉树前序后序和后序遍历(非递归实现)

二叉树的非递归遍历(先序中序后序和层序遍历)