关于二叉树的层次遍历
为什么这个代码输出的数据是乱码,是哪里错了?#include "stdio.h"
#include "stdlib.h"
#define MAXSIZE 100
typedef char ElemType;
typedef struct BTNode
{
ElemType data;
struct BTNode *lchild,*rchild;
}BTNode,*BiTree;
typedef struct
{
BiTree *base;
int front;
int rear;
}SqQueue;
void CreatBiTree(BiTree &t)
{
char c;
scanf("%c",&c);
if(c=='#')
{
t=NULL;
}
else
{
t=new BTNode;
t->data=c;
CreatBiTree(t->lchild);
CreatBiTree(t->rchild);
}
}
void InitSqQueue(SqQueue &q)
{
q.base=new BiTree;
q.front=q.rear=0;
}
int Push(SqQueue &q,BiTree t)
{
if((q.rear+1)%MAXSIZE==q.front)
return 0;
q.base=t;
q.rear=(q.rear+1)%MAXSIZE;
return 1;
}
int Pop(SqQueue &q)
{
if(q.rear==q.front)
return 0;
q.front=(q.front+1)%MAXSIZE;
return 1;
}
int QueueEmpty(SqQueue q)
{
return (q.front==q.rear);
}
BiTree Gethead(SqQueue q)
{
if(QueueEmpty(q))
{
return NULL;
}
else return (q.base[(q.front+1)%MAXSIZE]);
}
void Cengci(BiTree t)
{
SqQueue q;
BTNode *p;
InitSqQueue(q);
Push(q,t);
while(!QueueEmpty(q))
{
p=Gethead(q);
Pop(q);
printf("%c ",p->data);
if(p->lchild!=NULL)
{
Push(q,p->lchild);
}
if(p->rchild!=NULL)
{
Push(q,p->rchild);
}
}
}
int main()
{
BiTree T=NULL;
printf("请输入二叉树的内容\n");
CreatBiTree(T);
printf("\n");
printf("二叉树的先序输出是:\n");
Cengci(T);
return 1;
}
你是 怎么键入的能否 发上来 看看
页:
[1]