【正确答案】算法如下:
#define MAXSIZE 100
#define NULL 0
void preorder1(BTLINK*bt)
{ BTLINK*S[HAXSIZE],*p;
int top;
top=0; /*初始化空栈*/
p=bt;
do
{ while(p!=NULL)
{printf("/%4c",p->data);
top++;
if(top>MAXSIZE) /*判断栈满*/
printf("Stack is full.");
else
{ s[top]=p;
p=p->lchild; /*处理p的左子树*/
}
}
if(top!=0)
{ p=s[top];
top=top-1;
p=p->rchild; /*处理p的右子树*/
}
}
while((top!=0)||(P!=NULL));
}
main()
{ BTLINK*bt;
bt=createbt(); /*调用6.3节中建立二叉树的函数*/
preorderl(bt);
}
【答案解析】