先序遍历构造一个二叉树,当输入为‘#’时T=NULL
构造队列 访问节点 把左右子树入队 当节点值为NULL时 判断队列后面的值是否全为NULL 如果是则为完全二叉树
void create(BiTree &T)
{//构造二叉树
char ch;
scanf("%c",&ch)
if(ch=='#') T==NULL;
else {
T=(Node*)malloc(sizeof(Node));
T->data=ch;
create(T->lchild);
create(T->rchild);
}
}
void judgetree(BiTree &T)
{
int f=0,r=0,count=0;
BiTree p,a[MAXSIZE];
a[r++]=T;
while(f!=r)
{
p=a[f++];
if(p)
{
a[r++]=p->lchild;
a[r++]=p->rchild;
}
else
{
while(f!=r)
{
p=a[f++];
if(p) count++;
}
}
}
if(count) printf("不是完全二叉树");
else printf("是完全二叉树");
}