33,311
社区成员
发帖
与我相关
我的任务
分享
//二叉树中序遍历
Status InOrderTraverse(BiTree T,Status((* Visit))(TElemType e))
{
InitStack(S);//初始化栈
Push(S,T);//根指针进栈
while(!StackEmpty(S))//判断栈是否为空
{
while(GetTop(S,p)&&p)
Push(S,p->lchild);//左孩子进栈 向左走到头
Pop(S,p);//出栈
if(!StackEmpty(S))//判断栈是否为空
{
Pop(S,p);//出栈
if(!Visit(p->data))//对p指向的结点执行visit函数
return ERROR; //return后就不执行了,返回入口地址
Push(S,p->rchild);//右孩子进栈 向右走
}
}
return OK;//调用结束返回
}