看来老师的程序也不对啊哈哈~ 这个程序会有问题的 void VisitTree_LRD(BinTNode *t) { struct { BinTNode *ptr; char tag; } stack[100]; int top; BinTNode *p; if( t==NULL ) return; top = 0; p = t; while ( p != NULL ) { while ( p != NULL ) { stack[++top].ptr = p; stack[top].tag ='L';p = p->lchild; } while( top>0 && ( stack[top].tag =='R'|| stack[top].tag =='L'&& stack[top].ptr -> rchild == NULL )) { p = stack[top--].ptr; putchar( p->data ); } if(top>0) { stack[top].tag ='R'; p = stack[top].ptr->rchild; } else break; // p = NULL; } }