void PreOrderNoRec (BinTree BT)
{ stack S; BinTree p=BT->root;
while ((p != NULL) || !StackEmpty(S))
{ if (p!=NULL)
{ printf (“%c”, p->data); /*访问当前结点*/
Push (S,p); /*将p压入栈S*/
p = p->lchild; } /*将p指向其左子树*/
else
{ p = Top(S);
Pop(S); /*从栈S弹出栈顶元素*/
p = p->rchild; } /*将p指向其右子树*/
}
}
二叉树的非递归遍历中,不是很理解算法里的栈存在的意义是什么,因为最后节点访问顺序的输出是靠printf