数据结构的实验,非递归后序遍历二叉树,除了两个特殊的测试点,其他的都运行超时,反反复复打了好几遍草稿,就是不知道哪里错了
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天,您在需要使用的时候【私信】联系我,我会为您补发。