代码段:
nt LevelTree(BiTree T) //二叉树的层次遍历
{
if (T == NULL)//树空返回0
return 0;
else
{
BiTree Q[MaxSize];//定义一个足够储存树中所有元素的队列
int front = -1, rear = -1;//front为队头,rear为队尾
int last = 0, level = 0;//last指向当前层最右节点
rear++;//指针加一头节点入队
Q[rear] = T;//头节点入队
BiTree P = NULL;//定义一个运动指针
while (front < rear)
{
front++;//队头指针加一,队头元素出队
P = Q[front];
Visit(P);//打印元素
if (P->lChild != NULL)//左子树不为空,左孩子入队
{
rear++;
Q[rear] = P->lChild;
}
if (P->rChlid != NULL)//右子树不为空,右孩子入队
{
rear++;
Q[rear] = P->rChlid;
}
}//else
}//while
}
|