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; } } } }
