二叉树非递归遍历算法
Status InOrderTracerse(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)) return ERROR;
Push(S,p->rchild);
}//if
}//while
return OK;
}//InOrderTraverse
算法中 if(!StackEmpty(S))有啥作用?为啥不省略?