问答题 阅读下列算法,说明程序功能,并用图示输出执行后的结果。 #include #include #define n 7 typedef struct Node{char data;struct Node*Lc,*Rc;)Node,*BiNode; void unknowm(BiNode t,int i,char*a) {t=(Node*)malloc(sizeof(Node)); t一>data=a[i]; if(2*i<=n) unknown(t一>Lc,2*i,a); else t一>Lc=NULL; if(2*i+1<=n) unknown(t一>Rc, 2*i+1, a); else t一>Rc=NULL; ) void main() {char a[7]; a[1].‘a’;a[2]=。b’;a[3]="c"; a[4]=‘d’;a[5]="e";a[6]=‘f’; BiNode P;int j=1; unknown(p,J,a); } 【北京交通大学2005六、2(8分)】
【正确答案】正确答案:本算法是由二叉树的顺序存储结构生成二叉链表的程序,二叉树按完全二叉树存储,数组定义了7个元素,下标从l开始,a[1](即字母a)是二叉树的根结点。输出结果略。需要指出,程序中给了6个结点数据,数据从下标1开始存放。在判断有无左右子女时,不应包括n=7(下标为7)的情况。应改为(2 * i<n)和(2 * +i<n)。
【答案解析】