完全二叉树判断算法问题


void completetree(BiTree root)
{
Queue s;
BiTree temp=root;
s.front=s.rear=0;
if(root==NULL)
{
    printf("该二叉树为完全二叉树\n");
}
else
{
    enqueue(&s,root);//入队
    while(s.front!=s.rear)//队列非空
    {
        outqueue(&temp);//出队
        if(temp!=NULL)
        {   enqueue(root->lchild);
            enqueue(root->rchild);
        }
        else
            while(s->front!=s->rear)
        {
            outqueue(&root,&temp);
            if(temp!=NULL)
            {
                printf("不是完全二叉树\n");
            }
        }


    }

    printf("是完全二叉树\n");
}


}

算法有点问题 如何判断已经出队的是否为空

问题在描述清楚些?