《剑指offer》:[60]把二叉树打印成多行
来源:互联网 发布:windows7怎样优化电脑 编辑:程序博客网 时间:2024/06/05 10:29
题目:从上到下安层打印二叉树,同一层的结点按从左到右的顺序打印,每一层打印一行。
具体实现代码如下:
例如,图(1)中二叉树以及打印结果为:
具体实现代码如下:
#include <iostream>#include <queue>using namespace std;struct BinaryTree{int data;BinaryTree *pLeft;BinaryTree *pRight;};BinaryTree *pRoot1=NULL;queue<BinaryTree *> node;void CreateTree(BinaryTree *&root){int data;cin>>data;if(0==data)root=NULL;else{root=new BinaryTree;root->data=data;CreateTree(root->pLeft);CreateTree(root->pRight);}}void PrintTree(BinaryTree *root){if(NULL==root)return;node.push(root);int nextlevel=0;//下一层的结点数;int tobePrinted=1;//当前还有几个结点;while(!node.empty()){BinaryTree *pNode=node.front();cout<<pNode->data<<" ";if(pNode->pLeft!=NULL){node.push(pNode->pLeft);nextlevel++;}if(pNode->pRight!=NULL){node.push(pNode->pRight);nextlevel++;}node.pop();//入队列的速度比出队列的要快;tobePrinted--;if(tobePrinted==0){cout<<endl;//一行打印完了,所以换行;tobePrinted=nextlevel;nextlevel=0;}}}int main(){CreateTree(pRoot1);cout<<"之字形打印如下:"<<endl;PrintTree(pRoot1);cout<<endl;system("pause");return 0;}
运行结果如下:
0 0
- 剑指offer--把二叉树打印成多行
- 《剑指offer》把二叉树打印成多行
- 剑指Offer--把二叉树打印成多行
- 剑指offer:把二叉树打印成多行
- 剑指offer:把二叉树打印成多行
- [剑指offer]把二叉树打印成多行
- 剑指offer|把二叉树打印成多行
- 【剑指Offer】把二叉树打印成多行
- 剑指offer 把二叉树打印成多行
- 《剑指offer》把二叉树打印成多行
- 剑指offer-把二叉树打印成多行
- 剑指offer--把二叉树打印成多行
- 剑指offer--把二叉树打印成多行
- 剑指offer-把二叉树打印成多行
- 剑指offer:把二叉树打印成多行
- 剑指offer 60 - 把二叉树打印成多行
- 剑指offer-面试题60:把二叉树打印成多行
- 《剑指offer》:[60]把二叉树打印成多行
- Shell 注释,echo,printf
- 锁屏监测
- 用递归打印数字
- 线性表-大整数乘法(数据结构基础 第2周)
- android 5.0新特性 上滑关闭Toolbar
- 《剑指offer》:[60]把二叉树打印成多行
- Java的并发问题总结
- Tensorflow mnist basic
- 线程volatile
- HTML5 表单元素
- 侧滑
- salt and pepper noise
- 北理工Java实验2.4(文件字符流读入)
- JavaWeb开发中避免表单重复提交方法一