写了一个二叉树层次遍历但是输出的时候总是程序有问题,我用#作为空指针,
例如当我输入ABC##DE#G##F###,一直循环输出B,而不是ABCDEGF
typedef struct BiTree
{
char data;
struct BiTree *lchild;
struct BiTree *rchild;
}BiTree;
void visit(BiTree *T)
{
if((T->data)!='#')
cout<<T->data<<" ";
}
int CreatTree(BiTree *&T)
{
char data;
cin>>data;
if(data=='#')
T=NULL;
else
{
T=new BiTree;
T->data=data;
CreatTree(T->lchild);
CreatTree(T->rchild);
}
return 0;
}
void level(BiTree *p)
{
int front,rear;
BiTree *que[maxsize];
front=rear=0;
BiTree *q;
if(p!=NULL)
{
rear=(rear+1)%maxsize;
que[rear]=p;
while(front!=rear)
{
front=(front+1)%maxsize;
q=que[front];
visit(q);
if(p->lchild!=NULL)
{
rear=(rear+1)%maxsize;
que[rear]=p->lchild;
}
if(p->rchild!=NULL)
{
rear=(rear+1)%maxsize;
que[rear]=p->rchild;
}
}
}
}