非递归实现二叉树的前序、中序、后序遍历
来源:互联网 发布:mac pd好还是vm好 编辑:程序博客网 时间:2024/06/05 04:04
二叉树
1 非递归前序遍历二叉树
1.1 递归前序遍历二叉树
- 按照教科书上的做法,前序遍历过程如下:先访问根节点,再访问左节点,再访问右节点
- 另一种访问方式为:按照图中红线的轨迹,第一次遇到的节点即为前序遍历的过程
- 按照以上两种方法中的任意一种遍历都可以得到如下结果,前序遍历结果
A->B->D->G->H->C->E->I->F
1.2 非递归实现前序遍历
用栈可以实现二叉树的非递归前序遍历。栈是一种先进先出的数据结构,示意图如下:
用栈实现的二叉树前序遍历的过程如下:
- 1)将根节点加入栈
- 2)从栈中弹出一个节点,将该节点的右节点和左节点分别压入栈内
- 3)重复步骤2直到栈为空,弹出节点的顺序即为前序遍历的顺序
下图即为出栈入栈整个过程:
2 非递归中序遍历二叉树
2.1 递归中序遍历二叉树
- 按照教科书上的做法,中序遍历过程如下:先访问左子树,再访问根节点,再访问右节点
- 另一种访问方式为:按照图中红线的轨迹,第二次遇到的节点即为前序遍历的过程
- 按照以上两种方法中的任意一种遍历都可以得到如下结果,前序遍历结果
G->D->H->B->A->I->E->C->F
2.2 非递归实现前序遍历
依然用栈可以实现二叉树的非递归中序遍历。用栈实现的二叉树前序遍历的过程如下:
- 1)将树种所有的左子树全部压入栈内
- 2)从栈中弹出一个节点,如果该节点有右节点,则将以右节点为根节点的子树种所有的左节点压入栈内,如果有的节点没有左子树,只有右子树,则继续将节点的右子树中国的左节点加入到栈中
- 3)重复步骤2直到栈为空,弹出节点的顺序即为前序遍历的顺序
下图即为出栈入栈整个过程:
0 0
- 二叉树非递归前、中、后序遍历实现
- 非递归实现二叉树的后序遍历、前序遍历、中序遍历
- 二叉树的非递归【前/中/后 序遍历】
- 二叉树 前序遍历的非递归实现 中序遍历的非递归实现 后序遍历的非递归实现 创建二叉树
- 【二叉树】实现二叉树的前序、中序、后序的非递归遍历
- 二叉树的前序、中序、后序遍历 递归非递归实现
- 二叉树的前序、中序、后序(递归、非递归)遍历java实现
- 二叉树的前序,中序,后序遍历(递归非递归实现)
- 实现二叉树的前序/中序/后序递归、非递归遍历
- 二叉树的前序,中序,后序遍历。用递归和非递归实现
- 【二叉树遍历算法】——前/中/后序递归与非递归的实现
- JAVA实现二叉树的前、中、后序遍历(递归与非递归)
- 二叉树的遍历:前序、中序、后序、层序的非递归实现
- 二叉树的非递归前序,中序,后序遍历的Java实现
- 用java实现二叉树非递归的前序,中序,后序遍历算法
- 非递归实现二叉树的前序、中序、后序遍历
- 非递归实现二叉树的遍历(前序、中序、后序)
- Java实现二叉树的前序、中序、后序遍历(非递归方法)
- 任务调度(一)——jdk自带的Timer
- Android进程间通信(IPC)机制Binder简要介绍和学习计划
- No FileSystem for scheme: hdfs
- java中的几种泛型类——HashSet、HashMap、TreeSet、TreeMap,遍历map,排序,HashTable比较
- memcached全面剖析–2. 理解memcached的内存存储
- 非递归实现二叉树的前序、中序、后序遍历
- app后端设计--总目录
- 《HTTP权威指南》学习笔记(一)
- IOS开发基础—qq表情排列重构
- windows 下redis安装,使用
- Lintcode 131 Building Outline
- Linux GCC常用命令
- 绿色安装AutoVue20.2.2集成到vs2010和delphi ex7里
- .net学习之C#基础提高 19.switch-case