void Level(BTNode *p)
{
int front,rear;
rear=front=0;
BTNode *que[maxSize]; //上边三句定义了一个循环队列,用来记录将要访问的层次上的结点
BTNode *q;
if(p!=NULL)
{
rear=(rear+1)%maxSize;
que[rear]=p; //这两句叫树的根节点入队
while(rear!=front) //队列不空时进行循环
{
front=(front+1)%maxSize;
q=que[front]; //队头结点出队列
cout<<q-data; //访问队头结点
if(q->lchild!=NULL) //左子树非空时,左子树根节点入队
{
rear=(rear+1)%maxSize;
que[rear]=q->lchild;
}
if(q->rchild!=NULL) //右子树非空时,右子树根节点入队
{
rear=(rear+1)%maxSize;
que[rear]=q->rchild;
}
}
}
}
树的层次遍历
最新推荐文章于 2023-11-02 00:32:57 发布