void Preorder(BinTree T)
{/*先序遍历二叉树T的非递归算法*/
SeqStack *S;
BinTree p;
InitStack(S);
Push(S,T); /*根指针进栈*/
while(!StackEmpty(S))
{while(p=StackTop(S))
{ printf("%c ",p->data); /*访问入栈结点的数据域*/
Push(S,p->lchild); /*向左走到尽头*/
}
p=Pop(S); /*空指针退栈*/
if (!StackEmpty(S)) /*输出结点,向右一步*/
{p=Pop(S);
Push(S,p->rchild);
}
}
}