二叉树的存储结构类型定义如下。
typedef int DataType;
typedef struct node
{DataType data; //data是数据域,其值大于0
struct node *1child,*rchild; //分别指向左右孩子
}BinTNode;
typedef BinTNode *BinTree;
下列程序的功能是:将一棵二叉树的顺序存储结构转换为对应的链式存储结构。
例如,对如下图所示的二叉树,二叉树的顺序存储序列如下。
int data[]={30,20,0,0,90,0,0,0,0,100};
程序如下。
BinTree create(int *data,int n)
{BinTNode *Q[100],*Bt=NULL,*p;
int front=0,rear=0,k;
for(k=0;k<n;k++)
{p=NULL;
if(data[k]!=0)
{p=(BinTree)malloc(sizeof(BinTNode));
p-> data=data[k];
p-> lchild=p-> rchild=NULL;
}
Q[rear++]=p;
if(rear==1)Bt=p;
else
{if(p!=NULL&&___(1)___)
if(___(2)___==0)
Q[front]-> lchild=p;
else
Q[front]-> rchild=p;
if(rear%2!=0)
___(3)___;
}
}
return Bt;
}
请在程序的空白处填入适当的语句,使程序完整正确。
【正确答案】:(1)Q[front]!=NULL
(2)rear%2
(3)front++