typedef struct qnode
{
PTree data[MAXSIZE];
int front;
int rear;
}Queue,*PQueue;
/*----------------------------------------------------*/
PQueue init_queue()
{
PQueue pnode;
pnode = (PQueue)malloc(sizeof(Queue));
pnode->front = pnode->rear = 0;
return (pnode);
}
/*----------------------------------------------------*/
int empty_queue(PQueue pnode)
{
if(pnode->front == pnode->rear)
{
return (1);
}
else
{
return (0);
}
}
/*----------------------------------------------------*/
int full_queue(PQueue pnode)
{
if((pnode->front +1)%MAXSIZE == pnode->rear)
{
return (1);
}
else
{
return (0);
}
}
/*----------------------------------------------------*/
void in_queue(PQueue pnode, PTree t)
{
pnode->rear = (pnode->rear + 1)% MAXSIZE;
pnode->data[pnode->rear] = t;
}
/*----------------------------------------------------*/
void out_queue(PQueue pnode, PTree *t)
{
pnode->front = (pnode->front + 1) % MAXSIZE;
*t = pnode->data[pnode->front];
}
/*----------------------------------------------------*/
void levelorder(PTree root)
{
PTree now_node = root;
PQueue q;
if(NULL != now_node)
{
q = init_queue();
printf("%d ",now_node->data);
in_queue(q,now_node);
while(!empty_queue(q))
{
out_queue(q,&now_node);
if(now_node->lchild)
{
printf("%d ", now_node->lchild->data);
in_queue(q, now_node->lchild);
}
if(now_node->rchild)
{
printf("%d ", now_node->rchild->data);
in_queue(q, now_node->rchild);
}
}
}
}
浙公网安备 33010602011771号