首页 > 其他 > 详细

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

时间:2017-11-01 19:25:26      阅读:265      评论:0      收藏:0      [点我收藏+]

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即不等于左儿子,也不等于右儿子,左儿子进栈。

 

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

原文:http://www.cnblogs.com/hustdc/p/7767883.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!