博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
二叉树前序、中序和后序遍历的非递归实现
阅读量:7225 次
发布时间:2019-06-29

本文共 652 字,大约阅读时间需要 2 分钟。

1 二叉树的遍历

1.1 前序遍历

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

1.2 中序遍历

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

1.3 后序遍历

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

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

第一,用栈实现;

第二,每个元素都要入栈;

第三,每当有新的元素入栈了,都要检查栈顶元素是不是可以出栈了。

第四,可以出栈的条件:

        1, 它的左儿子为NULL

        2, 刚进行了一次出栈操作,现在它是新的栈顶元素,这个时候就证明它的左子树已经被访问完了,现在轮到它了。

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

入栈:

第一,root无条件入栈

第二,latest_poped为NULL时,左孩子不为null,左孩子入栈;左孩子为null,右孩子不为null,右孩子入栈;

第三,latest_poped不为null时:

        latest_poped是左孩子时,右孩子不为null,右孩子入栈;

        latest_poped不是孩子时,左孩子不为null,左孩子入栈;左孩子为null,右孩子不为null,右孩子入栈;

出栈:

第一,叶子出栈

第二,latest_poped是右孩子时,出栈

第三,latest_poped是左孩子,并且右孩子为null,出栈。

 

转载于:https://www.cnblogs.com/hustdc/p/7767883.html

你可能感兴趣的文章
android百种动画侧滑库、步骤视图、TextView效果、社交、搜房、K线图等源码
查看>>
iOS仿今日头条、壁纸应用、筛选分类、三方微博、颜色填充等源码
查看>>
诡异!React stopPropagation失灵
查看>>
Python_OOP
查看>>
个人博客开发系列:评论功能之GitHub账号OAuth授权
查看>>
mongodb--安装和初步使用教程
查看>>
ES6简单总结(搭配简单的讲解和小案例)
查看>>
text-decoration与color属性
查看>>
如何使用Mybatis第三方插件--PageHelper实现分页操作
查看>>
PyCharm搭建GO开发环境(GO语言学习第1课)
查看>>
Android交互
查看>>
提醒我喝水chrome插件开发指南
查看>>
列表数据转树形数据
查看>>
Java新版本的开发已正式进入轨道,版本号18.3
查看>>
从零开始的webpack生活-0x009:FilesLoader装载文件
查看>>
在electron中实现跨域请求,无需更改服务器端设置
查看>>
gitlab-ci配置详解(一)
查看>>
听说你叫Java(二)–Servlet请求
查看>>
案例分享〡三拾众筹持续交付开发流程支撑创新业务
查看>>
FreeWheel业务系统微服务化过程经验分享
查看>>