数据结构 非递归后序遍历二叉树 运行超时

数据结构的实验,非递归后序遍历二叉树,除了两个特殊的测试点,其他的都运行超时,反反复复打了好几遍草稿,就是不知道哪里错了
void PostorderTraversal( BinTree BT ){
BinTree p;
Stack S;

S = CreateStack();

p = BT;
if(BT == NULL){
    return; 
}
Push( S,p );
while(!IsEmpty( S )){
    while(Peek( S )->Left != NULL){
        Peek( S )->flag = 1;
        Push( S,Peek( S )->Left );
    }
    if(Peek( S )->Left == NULL){
        Peek( S )->flag = 1;
    }
    while(!IsEmpty( S )){
        if(Peek( S )->Right != NULL){
            if(Peek( S )->flag == 2){
                printf(" %c",Peek( S )->Data);
                Pop( S );
                continue;
            }
            Peek( S )->flag == 2;
            Push( S,Peek( S )->Right );
            break;
        }
        else {
            printf(" %c",Peek( S )->Data);
            Pop( S );
        }
    }
}

}

发现错误了, 把对flag的赋值语句Peek( S )->flag = 1改成p = Peek( S ); p->flag = 1;就能正常运行,但不知道为什么

你好,我是有问必答小助手,非常抱歉,本次您提出的有问必答问题,技术专家团超时未为您做出解答


本次提问扣除的有问必答次数,将会以问答VIP体验卡(1次有问必答机会、商城购买实体图书享受95折优惠)的形式为您补发到账户。


因为有问必答VIP体验卡有效期仅有1天,您在需要使用的时候【私信】联系我,我会为您补发。