按之字形顺序打印二叉树
2015-07-09 14:33
477 查看
时间限制:1秒空间限制:32768K
通过比例:30.04%
最佳记录:0 ms|8552
请实现一个函数按照之字形打印二叉树,即第一行按照从左到右的顺序打印,第二层按照从右至左的顺序打印,第三行按照从左到右的顺序打印,其他行以此类推。
通过比例:30.04%
最佳记录:0 ms|8552
题目描述
请实现一个函数按照之字形打印二叉树,即第一行按照从左到右的顺序打印,第二层按照从右至左的顺序打印,第三行按照从左到右的顺序打印,其他行以此类推。/* struct TreeNode { int val; struct TreeNode *left; struct TreeNode *right; TreeNode(int x) : val(x), left(NULL), right(NULL) { } }; */ class Solution { public: vector<vector<int> > Print(TreeNode* pRoot) { vector<vector<int> > ret; if(!pRoot) return ret; vector<int> curLayer; vector<TreeNode*> LevelSearch; TreeNode *cur=pRoot; LevelSearch.push_back(cur); int start=0,end=0; bool LR=false; do{ for(int i=start;i<=end;++i){ if(LevelSearch[i]->left) LevelSearch.push_back(LevelSearch[i]->left); if(LevelSearch[i]->right) LevelSearch.push_back(LevelSearch[i]->right); curLayer.push_back(LevelSearch[i]->val); } if(LR){ int temp=-1; for(int i=0,j=curLayer.size()-1;i<j;++i,--j){ temp=curLayer[i]; curLayer[i]=curLayer[j]; curLayer[j]=temp; } } ret.push_back(curLayer); LR=!LR; curLayer.clear(); start=end+1; end=LevelSearch.size()-1; }while(start<=end); return ret; } };
相关文章推荐
- 数据挖掘之K-means算法
- mac 查看端口是否被使用
- EditText输入手机号自动带空格
- ios 获取屏幕的属性和宽度
- ViewPager的视差背景效果
- C#开发Unity游戏教程之判断语句
- IE 跟人家不一样的一些地方
- CocoaPods 下载慢
- 【C语言】打印1到最大的n位数
- 分析Masonry
- TCP协议过程详解
- iPhone如何打包成一个通用的静态库文件
- 关于Fragment对于回退栈的理解问题
- MySQL 初始化root 密码
- Redis 3.0 集群搭建
- 随笔
- 思达BI软件StyleIntelligence实例教程—帕累托图
- Mongodb模糊查询
- Ubuntu下将现有的文件打包成deb包
- 如何提升MySQL批量插入的效率