需要用两个变量来记录下一层有多少个结点需要打印以及本次还有多少个结点未打印。
void levelPrint(Node *root){
if (root==NULL)
{
return ;
}
queue<Node *> q;
q.push(root);
//下一层有多少个结点需要打印
int i=0;
//还有多少个结点未打印
int j=1;
while (!q.empty())
{
Node * p=q.front();
q.pop();
--j;
printf("%d\t",p->data);
if (p->left!=NULL)
{
q.push(p->left);
++i;
}
if (p->right!=NULL)
{
q.push(p->right);
++i;
}
//按之字形打印
if (j==0){
printf("\n");
j=i;
i=0;
}
}
}