应用题 15.判别给定的二叉树是否是完全二叉树,并给出设计的算法(可不描述结构体)。
【正确答案】 判断此二叉树是否为完全二叉树的算法设计如下:
int JudgeComplete(BiTree bt){
//判断二叉树是否是完全二叉树,如是,返回1;否则,返回0
int tag=0;
BiTree P=bt,Q[]; //Q是队列,元素是二叉树结点指针,容量足够大
if(p==null)return 1;
QueueInit(Q);
QueueIn(Q,P); //初始化队列,根结点指针入队
while(!QueueEmpty(Q)){
P=QueueOut(Q); //出队
if(p->lchild&&! tag)Queueln(Q,P一>lchild); //左孩子入队
else{
if(P一>lchild)return 0; //前边已有结点为空,本结点不空
else tag=1; //首次出现结点为空
if(p一>rchild&&!tag)QueueIn(Q,P一>rchild); //右孩子入队
else if(p一>rchild)return 0;
else tag=1;
}
}//while
return 1 ;
}//Judgecomplete
【答案解析】