C语言实现判断二叉树是否是完全二叉树
希望高人指点这个算法哪里不对
//判断二叉树是否是完全二叉树
#include<stdio.h>
#include<windows.h>
typedef struct Bitnode
{
public:
char data;
Bitnode *lchild,*rchild;
};
int i = 1;
Bitnode *head;
Bitnode* create(Bitnode *T)
{
char ch;
scanf("%c",&ch);
if(ch=='x')
T=NULL;
else
{
T=new Bitnode;
if(i == 1)
head = T;
i++;
if(!T)
{
printf("error!");
exit(1);
}
T->data =ch;
T->lchild =new Bitnode;
T->lchild=create(T->lchild );
T->rchild =new Bitnode;
T->rchild=create(T->rchild );
}
return T;
}
typedef struct
{
Bitnode data[10];
int front;
int rear;
}Queue;
void inital(Queue *q)
{
q->front =0;
q->rear =0;
}
void push(Queue *q,Bitnode t)
{
q->data [q->rear]=t;
q->rear++;
}
int isempty(Queue *q)
{
if(q->front ==q->rear )
return 1;
else
return 0;
}
Bitnode pop(Queue *q)
{
return q->data [q->front];
q->front++;
}
int Iserchashu(Bitnode *t,Queue *q)
{
Bitnode *p;
int flag=0;
push(q,*t);
while(!isempty(q))
{
*p=pop(q);
if(!p)
flag=1;
else
if(flag==1)
return 0;
push(q,*p->lchild );
push(q,*p->rchild );
}
}
void main()
{
Bitnode *t;
create(t);
Queue *q;
inital(q);
printf("%d",Iserchashu(head,q));
}