码迷,mamicode.com
首页 > 其他好文 > 详细

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

时间:2017-11-01 19:42:50      阅读:135      评论:0      收藏:0      [点我收藏+]

标签:非递归   出栈   等于   中序遍历   中间   bsp   递归   左右   实现   

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

 

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

标签:非递归   出栈   等于   中序遍历   中间   bsp   递归   左右   实现   

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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!