非递归中序遍历二叉树(图解)
来源:互联网 发布:骑士vs勇士第五场数据 编辑:程序博客网 时间:2024/06/01 10:33
本文参考:http://www.slyar.com/blog/bitree-unrecursion-c.html
为了加深记忆,将代码中的每一步操作弄成了PPT。图解如下,如有不当之处,还请指正。谢谢。
中序遍历:先访问左子树,再访问根节点,最后访问右子树。
设置一个栈,出栈即为访问节点。先将根节点的左节点全部进栈,然后出栈一个节点,访问。
将该节点的右孩子节点进栈,再将右孩子节点的所有左节点全部进栈...如此这般直到栈空为止。
代码如下:
void InOrderTraverse(BiTree T, Status (* visit)(ElemType e)){BiTree pStack[100];BiTree p;int top = -1;if(T != NULL){p = T;while(top > -1 || p != NULL){while(p != NULL){pStack[++top] = p;p = p->lchild;}if(top > -1){p = pStack[top--];visit(p->data);p = p->rchild;}}}}
运行步骤如下:
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
- 非递归中序遍历二叉树(图解)
- 非递归前序遍历二叉树(图解)
- 中序遍历二叉树(递归 & 非递归)
- 【二叉树遍历】中序------非递归
- 非递归中序遍历二叉树
- 中序遍历二叉树 [非递归]
- 非递归中序遍历二叉树
- 非递归中序遍历二叉树
- 图解二叉树非递归版的中序遍历算法
- 二叉树非递归后序遍历(非递归遍历中最麻烦的一个)
- 递归构建二叉树---中序遍历二叉树(递归与非递归)
- 二叉树的遍历(中序,非递归)
- 二叉树的中序遍历(非递归)
- 二叉树的中序遍历(非递归)
- 接前-中序遍历二叉树(非递归)
- 二叉树的中序递归,非递归遍历
- 二叉非递归的中序遍历(递归创建)
- java建立二叉树,递归/非递归先序遍历,递归/非递归中序遍历,层次遍历
- Scheme学习汇总
- StringBuffer和StringBuilder的区别
- C++ 第二课
- altium 官方pcb库的下载方法
- 黑马程序员——异常总结(老师)
- 非递归中序遍历二叉树(图解)
- VC中__int64的用法
- JAVA中String、StringBuffer、StringBuilder区别
- 二分查找
- Cocos2d-x中的时间调度
- Vim 命令-快捷键 集合(Easy Version)
- C语言字符串函数
- head first---------facade design pattern
- HDU 1312 Red and Black