二叉树的层次遍历,输入数据后,却没有输出结果

#include
#include
#define max 50
typedef struct bitnode
{
char data;
struct bitnode *lchild,*rchild;
}bitnode,*bitree;
typedef struct
{
bitree data[max];
int front,rear;
}queue;

void initqueue(queue &q)
{
q.front=q.rear=0;
}

int isempty(queue q)
{
return q.rear==q.front?1:0;
}

void enqueue(queue &q,bitree T)
{
if((q.rear+1)%max==q.front)
{
printf("队列已满");
}
q.rear=(q.rear+1)%max;
q.data[q.rear]=T;
}

void dequeue(queue &q,bitnode *x)
{
if((q.front+1)%max==q.rear)
{
printf("队列已空");
}
x=q.data[q.rear];
q.rear=(q.rear+1)%max;
}

void levelsort(bitree T)
{
queue q;
initqueue(q);
bitnode *p=NULL;
enqueue(q,T);
while(!isempty(q))
{
dequeue(q,p);
printf("%c ",p);
if(p->lchild!=NULL)
{
enqueue(q,p->lchild);
}
if(p->rchild!=NULL)
{
enqueue(q,p->rchild);
}
}
}

void creatbitree(bitree &T)
{
char ch;
ch=getchar();
if(ch=='#')
{
T=NULL;
}
else
{
T=(bitnode *)malloc(sizeof(bitnode));
T->data=ch;
T->lchild=NULL;
T->rchild=NULL;
creatbitree(T->lchild);
creatbitree(T->rchild);
}
}

int main()
{
bitree T=NULL;
creatbitree(T);
levelsort(T);
return 0;
}

测试运行时候的二叉树创建的输入发下,就是构建的屏幕的数据