问答题
说明下列程序功能,用图示给出子程序crt_pre的结果,并给出输出结果。 #include“malloc.h” #include“stdio.h” typedef struct BinNode {chardata; struct BinNode*ich,*rch;)BinNode,*Bintree; struct chtp(int len;char ch[100];)S; struct queue {struct BinNode*elem[100];int front,rear;)q; struct BinNode*bt; int ii=0; void crt_pre(Bintree*t) {char c; c=s.ch[ii]; ii=ii+1; if(c==‘.’) *t=0; else{*t=(BinNode*)malloc(sizeof(BinNode)); (*t)一>data=c; crt_pre(&(*t)一>Ich); crt_pre(&(*t)一>rch); }; } int unknown(BinNode*p) {BinNode*t ; int max=0,W=0;q.front=q.rear=0 ; if(p) {q.elem[q.rear++]=p; q.elem[q.rear++]:0; while(q.front!=q.rear) {t=q.elemcq.front++]; if(t){w++; if(t一>ich)q.elem[q.rear++]=t一>ich; if(t一>rch)q.elem[q.rear++]:=t一>rch; } else(if(q.front!=q.rear)q.elem[q.rear++]=0; if(w>max)max=w; w=0: } } } return max; } main() {char c[]={“abd..eh.cf.i..g!”);int i=0,num; for(i=0,s.1en=0;c[i]!=‘!’; i++,S.1en++)s.ch[i]=c[i]; crt_pre(&bt); num=unknown(bt); printf(“\n w=%d\n”,num); } 【北京交通大学2006六、1(8分)】
【正确答案】正确答案:子程序cn_pre建立了一棵二叉树,算法求二叉树的宽度,输出4。
【答案解析】