二叉树前序中序和后序遍历的非递归实现
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即不等于左儿子,也不等于右儿子,左儿子进栈。
以上是关于二叉树前序中序和后序遍历的非递归实现的主要内容,如果未能解决你的问题,请参考以下文章