问答题 已知二叉树T采用二叉链表结构存储,每个结点有三个字段:data,Lchild和Rchild。设计算法求出T的顺序存储结构A[1..n],并给出初始调用形式。要求:如某位置为空,将其置为null;如超出下标范围n则报错;最后返回实际的最大下标。如图所示为,l=15时一个二叉树及所对应的输出结果示例(空缺表示null)。输出结果(表结构的值和最大下标):maxsub=12(最大下标为12)。【合肥工业大学2001五、5(8分)】
【正确答案】正确答案:按层次遍历二叉树,用队列存储结点,数组A按完全二叉树存储,初始化A的各元素都是null。核心语句段如下: QueueIn(Q,(bt,1)); //二叉树根结点指针和参数1入队列. while(!QueueEmpty(Q)) {qq=QueueDel(Q); p=qq.t;i=qq.i; A[i]=P一>data;last=i; //数据存入数组,i是当前最大下标 if(p一>lchild) QueueIn(Q,(p一>ichiid,2*i)); if(t->rchild)QueueIn(Q,(p->ichild,2*i+1)) } cout<<"实际的最大下标= "<
【答案解析】