二叉树的中序遍历的非递归算法
来源:互联网 发布:杭州友谦网络 编辑:程序博客网 时间:2024/05/23 18:31
先回顾二叉树的中序遍历的递归算法:
先遍历左子树
然后遍历根结点
最后遍历右子树
对于左子树和右子树使用同样的思想
二叉树的中序遍历的非递归算法的思想:
中序遍历最先输出的结点是根结点的左子树中的左子树。。。(即最底层的左子树,即叶子结点的左子树),这可以通过反复执行p=p->left实现。同时要保证能回到左子树的根结点,这就需要用栈来存储在查找叶子左子树时经过的结点。这样在访问左子树后,就可以通过出栈得到此结点的根结点。
因为是中序遍历,在访问根结点后,再访问右结点,即p=p->right,原来同上左子树,知道p为空且堆栈为空
二叉树的中序遍历的非递归算法的实现:
void
InOrderUnrec(Bitree t)
{
SqStack s;
StackInit(s);
p=t;
while
(p!=null || !StackEmpty(s))
{
while
(p!=null)
//遍历左子树
{
push(s,p);
p=p->lchild;
}
//endwhile
if
(!StackEmpty(s))
{
p=pop(s);
visite(p->data);
//访问根结点
p=p->rchild;
//通过下一次循环实现右子树遍历
}
//endif
}
//endwhile
}
//InOrderUnrec
- 二叉树的中序遍历的非递归算法
- 中序遍历二叉树的非递归算法
- 二叉树的中序遍历(非递归算法)
- 【LintCode-67】二叉树的中序遍历(Java实现-递归算法/非递归算法)
- 二叉树先序、中序、后序三种遍历的非递归算法
- 二叉树先序、中序、后序三种遍历的非递归算法
- 二叉树先序、中序、后序三种遍历的非递归算法
- 二叉树前序、中序、后序三种遍历的非递归算法
- 二叉树遍历的非递归算法
- 遍历二叉树的非递归算法
- 遍历二叉树的非递归算法
- 二叉树的遍历非递归算法
- 遍历二叉树的非递归算法
- 二叉树的遍历非递归算法
- 二叉树遍历的非递归算法
- 二叉树的非递归遍历算法
- 二叉树遍历的非递归算法
- 二叉树遍历的非递归算法
- 如何用DirectShow实现音频采集
- linux挂载U盘
- postgres 存储过程 游标 函数
- N-vop、S-vop、Packed Bistream
- LOESS资料总结
- 二叉树的中序遍历的非递归算法
- Linux下chkconfig命令详解
- 碰撞事件对应捕捉与处理实例
- 计算机SAP-1 设计与实现(1)
- 开源 免费 java CMS - FreeCMS-功能说明-信息管理
- 给软件开发初学者 c++
- SQL 执行顺序和性能优化
- Python集成开发环境(eclipse+pydev)遇到的问题
- Linux系统目录结构