二叉树的非递归遍历(使用栈)
来源:互联网 发布:模糊车牌识别软件 编辑:程序博客网 时间:2024/05/16 15:11
void PreOrder(BiTree T) //先序非递归遍历二叉树
{
InitStack(S); //创建工作栈
Push(S,T);
while(!StackEmpty(S))
{
Pop(S,p); //出栈
Visit(p); //访问
if(p->rchild)
Push(S,p->rchild); //右子树入栈
if(p->lchild)
Push(S,p->lchild); //左子树入栈
}
}
void InOrder(BiTree T) //中序非递归遍历二叉树
{
InitStack(S); //创建工作栈
Push(S,<T,0>); //根入栈,且置标志此时不能访问
while(!StackEmpty(S))
{
Pop(S,<p,flag>); //出栈
if(flag==1)
Visit(p); //访问标志为可以访问
else
{
if(p->rchild)
Push(S,<p->rchild,0>); //右子树入栈且置访问标志
Push(S,<p,1>); //根入栈且置访问标志
if(p->lchild)
Push(S,<p->lchild,0>); //左子树入栈且置访问标志
}
}
}
void PostOrder(BiTree T) //后序非递归遍历二叉树
{
InitStack(S); //创建工作栈
Push(S,<T,0>); //根入栈,且置i0标志此时不能访问
while(!StackEmpty(S))
{
Pop(S,<p,flag>); //出栈
if(flag==1)
Visit(p); //访问标志为可以访问
else
{
Push(S,<p,1>); //根入栈且置访问标志
if(p->rchild)
Push(S,<p->rchild,0>); //右子树入栈且置访问标志
if(p->lchild)
Push(S,<p->lchild,0>); //左子树入栈且置访问标志
}
}
}
原文:http://www.programfan.com/blog/article.asp?id=19799
- 二叉树的非递归遍历(使用栈)
- 二叉树的遍历(递归+非递归+层次遍历)
- 二叉树的遍历(非递归)
- 二叉树的遍历(非递归)
- 二叉树的遍历(非递归)
- 二叉树递归遍历与非递归遍历的栈空间使用
- 【树】二叉树的非递归遍历(栈&Morris)
- 二叉树的非递归遍历(栈)
- 用栈实现二叉树的遍历(非递归)
- 二叉树的递归,非递归遍历
- 二叉树的递归+非递归遍历
- 二叉树的递归非递归遍历
- 二叉树的遍历--递归+非递归
- 二叉树的递归、非递归遍历
- 二叉树的递归非递归遍历
- 二叉树遍历(递归,非递归)
- 二叉树的遍历(递归实现+非递归实现)
- 二叉树的三种遍历(递归+非递归)
- asp.net2.0基于flex3.0的ajax登录验证(MXML和XML)
- codeIgniter集成smarty
- asp.net 配置文件对app_code中的类型引用
- java 杨辉三角代码
- vsftpd 'can not change directory' error
- 二叉树的非递归遍历(使用栈)
- 查找随机数组中的质数个数
- IBM Rational 系统开发最佳实践工具包
- 精通用Grails实现面向资源服务的架构
- Linux 上的云计算平台和应用
- 用 Perl 和 Google Earth 创建时间可用性地图
- 如何支持POS 应用程序的 Web 服务
- 使图像文本具有语义并且可搜索
- struts2.0应用