把二叉树打印成多行

来源:互联网 发布:mac更改输入法快捷键 编辑:程序博客网 时间:2024/05/29 02:54

需要用两个变量来记录下一层有多少个结点需要打印以及本次还有多少个结点未打印。

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


0 0