#include<iostream>
using namespace std;
#define maxsize 100
typedef int elemtype;
typedef struct binode
{
elemtype *data;
struct binode* lch, * rch;
}binode,*bitree;
typedef struct
{
bitree* base;
int front, rear;
}sqqueue;//顺序循环队列类型
bool initqueue(sqqueue& q)//循环队列初始化
{
q->base = new bitree[maxsize];
if (!q->base)
{
exit(-1);
}
q.front = q.rear=0;
return 1;
}
bool enqueue(sqqueue& q, bitree e)//循环队列入队
{
if ((q.rear + 1) % maxsize == q.front)
{
return 0;
}
q.base[q.rear] = e;
q.rear = (q.rear + 1) % maxsize;
return 1;
}
bool dequeue(sqqueue& q, bitree& e)//循环队列出队
{
if (q.front == q.rear)
{
return 0;
}
e = q.base[q.front];
q.front = (q.front + 1) % maxsize;
return 1;
}
bool queueempty(sqqueue q)
{
if (q.front == q.rear)
{
return 1;
}
else
{
return 0;
}
}
void levelorder(bitree t)
{
binode* p=t;
sqqueue qu;
initqueue(qu);//初始化队列
enqueue(qu, p);//根结点指针入队
while (!queueempty(qu))
{
dequeue(qu, p);//出队
cout << p->data << endl;
if (p->lch != NULL)
{
enqueue(qu, p->lch);
}
if (p->rch != NULL)
{
enqueue(qu, p->rch);
}
}
}
int main()
{
return 0;
}
二叉树的层次遍历
最新推荐文章于 2024-09-12 19:02:20 发布