版权声明:作者:weizu_cool https://blog.csdn.net/qq_26460841/article/details/84138310
创建二叉树就不说了,这里直接:
- 中序递归遍历算法
void InOrder(BiTree T){
if(T){
InOrder(T->lchild);
cout<<T->data<<" ";
InOrder(T->rchild);
}
}
- 中序非递归遍历算法
void InOrder(BiTree T){
//还是模拟上面的遍历过程
BiTree ptr[20];
int top = -1;
/*下面的双重判断和前面的一样,在进栈、出栈的过程中可能会出现栈空的情况,而此时的遍历还没有结束,
所以需要据此来维持循环的进行。*/
while(T || top!=-1){
while(T){
ptr[++top] = T;
T = T->lchild;
}
if(top!=-1){
T = ptr[top--];
cout<<T->data<<" "; //输出在出栈后
T = T->rchild;
}
}
}
-----------------------------------------------------------分割线------------------------------------------------------------------------
测试截图:
作者:无涯明月
发文时间:2018-11-16