数据结构之二叉树中序非递归遍历
2014-07-27 10:21
309 查看
#SIZE 100
typedef struct{
int data;
BNode *lchild,*rchild;
}BNode,*BiTree;
typedef struct{
int top,rear;
BiTree Tree[SIZE];
}Stack;
int zhongxu_tree(BiTree &T,Stack &S){
BiTree p=T;
if(!p)return 1;
S.rear=S.top=0;
Push(p,S);
while(1){
if(p->lchild){
p=p->lchild;
Push(p,S);
}
else{
p=Pop(S);
if(S.top==-1)
break;
visit(p);
while(!p->rchild)
{
p=Pop(S);
if(S.top==-1)
break 2;
visit(p);
}
Push(p->rchild,S);
p=p->rchild;
}
}
}
void Push(BiTree &p,Stack &S){
if(S.top>=SIZE)
exit(1);
S.Tree[top]=p;
S.top++;
}
BiTree Pop(Stack &S){
S.top--;
if(S.top==-1)
return NULL;
else
return S.Tree[S.top];
}
typedef struct{
int data;
BNode *lchild,*rchild;
}BNode,*BiTree;
typedef struct{
int top,rear;
BiTree Tree[SIZE];
}Stack;
int zhongxu_tree(BiTree &T,Stack &S){
BiTree p=T;
if(!p)return 1;
S.rear=S.top=0;
Push(p,S);
while(1){
if(p->lchild){
p=p->lchild;
Push(p,S);
}
else{
p=Pop(S);
if(S.top==-1)
break;
visit(p);
while(!p->rchild)
{
p=Pop(S);
if(S.top==-1)
break 2;
visit(p);
}
Push(p->rchild,S);
p=p->rchild;
}
}
}
void Push(BiTree &p,Stack &S){
if(S.top>=SIZE)
exit(1);
S.Tree[top]=p;
S.top++;
}
BiTree Pop(Stack &S){
S.top--;
if(S.top==-1)
return NULL;
else
return S.Tree[S.top];
}
相关文章推荐
- 数据结构中二叉树的递归遍历与非递归遍历
- 数据结构——二叉树(递归与非递归遍历)
- 【数据结构与算法】二叉树递归与非递归遍历(附完整源码)(转)
- 基础数据结构算法_二叉树的恢复和非递归遍历
- 【数据结构与算法】二叉树递归与非递归遍历(附完整源码)
- 数据结构之二叉树的非递归遍历
- 数据结构——二叉树的递归与非递归遍历(先序,中序,后序)
- 【数据结构与算法】二叉树递归与非递归遍历
- 【数据结构与算法】二叉树递归与非递归遍历(附完整源码)
- 数据结构之二叉树的非递归遍历
- C++数据结构之二叉树递归操作
- 数据结构线索化二叉树
- 数据结构——二叉树的遍历
- 数据结构之二叉树
- 数据结构——树(二叉树)
- SDUT-2136 数据结构实验之二叉树的建立与遍历
- 二叉树的递归与非递归遍历(二叉链表结构)
- 二叉树(数据结构1)
- 数据结构基础(4)-->二叉树
- 数据结构——树(二叉树)