宝慕林4294392
获取顶部标签的作用。可以得到一个bool返回值,一般用于树结构中。T是要遍历树的根指针,后序遍历要求在遍历完左右子树后,再访问根。需要判断根结点的左右子树是否均遍历过。可采用标记法,结点入栈时,配一个标志tag一同入栈(0:遍历左子树前的现场保护,1:遍历右子树前的现场保护)。首先将T和tag(为0)入栈,遍历左子树;返回后,修改栈顶tag为1,遍历右子树;最后访问根结点。typedef struct stackElement{Bitree data;char tag;}stackElemType;【算法】void PostOrder(BiTree T, Status ( *Visit ) (ElemType e)){ // 流程图如右,当型循环InitStack(S);while ( T!=NULL || !StackEmpty(S) ){while ( T != NULL ){Push(S,T,0);T = T->lchild;}while ( !StackEmpty(S) && GetTopTag(S)==1){Pop(S, T);Visit(T->data);}if ( !StackEmpty(S) ){SetTopTag(S, 1); // 设置栈顶标记T = GetTopPointer(S); // 取栈顶保存的指针T = T->rchild;}else break;}}