问答题 编写一个算法,将用二叉链表表示的完全二叉树转换为二叉树的顺序表示,假设数据类型为int型。
【正确答案】因为链表形式是递归的数据结构,所以使用递归算法最简单。将以t为根的二叉链表表示的二叉树转换为二叉树的顺序表示也可以采用递归算法,其思路是:假设子树的根t存放于T[i],则可将它的左子女存放于T[2*i],右子女存放于T[2*i+1]。 在主程序调用时,t应赋予root,i应赋予1(根结点在T[1]中)。 void LinkList_to_Array(BTNode *t,int A[],int n,int i) { if(t==NULL) return; if(i>n) { cout<<"array memory limit"<<endl; return; } A[i]=t→data; LinkList_to_Array(t→lchild,A,n,2*i); LinkList_to_Array(t→rchild,A,n,2*i+1); }
【答案解析】