题目描述

请实现一个函数按照之字形打印二叉树,即第一行按照从左到右的顺序打印,第二层按照从右至左的顺序打印,第三行按照从左到右的顺序打印,其他行以此类推。
 
题解:
  与上道题没区别,就是在存入数据时,对于奇数行的数据,先反转一下,再存入即可
  

 class Solution {
public:
vector<vector<int> > Print(TreeNode* pRoot) {
vector<vector<int>>res;
BFS(pRoot, res);
return res;
}
void BFS(TreeNode *root, vector<vector<int>>&res)
{
if (root == nullptr)return;
queue<TreeNode*>q;
q.push(root);
bool fromLeft = true;
while (!q.empty())
{
queue<TreeNode*>temp;
vector<int>v;
while (!q.empty())
{
TreeNode* p = q.front();
q.pop();
v.push_back(p->val);
if (p->left != nullptr)temp.push(p->left);
if (p->right != nullptr)temp.push(p->right);
}
if(fromLeft)
res.push_back(v);
else
{
reverse(v.begin(), v.end());
res.push_back(v);
}
fromLeft = !fromLeft;
q = temp;
}
}
};

最新文章

  1. 通过拦截器Interceptor实现Spring MVC中Controller接口访问信息的记录
  2. Java开源库
  3. 012 VS2013常用快捷键
  4. hdu----(4301)Divide Chocolate(状态打表)
  5. wmic
  6. MySQL分区技术 (一)
  7. CodeForces 343D 线段树维护dfs序
  8. hdu 5072 Coprime(同色三角形+容斥)
  9. TodoList开发笔记 – Part Ⅲ
  10. 记录一次Session偶尔获取不到的解决过程
  11. 洛谷P3402 【模板】可持久化并查集(可持久化线段树,线段树)
  12. JS检测是否是360浏览器
  13. 02 编程语言、python变量
  14. 00-JAVA语法基础--课后作业
  15. 编译Linux-4.15.1内核时遇到:“error : openssl/bio.h :No such file or folder”
  16. 装饰者模式——Java设计模式
  17. jquery 实现两级导航菜单
  18. mysql ssh 端口转发
  19. OOAD之单例模式Singleton的6种写法
  20. 【请仔细核对Git地址】关于代码量排名的说明

热门文章

  1. robotium学习
  2. 模拟栈&amp;&amp;模拟队列
  3. 18、Linux命令对服务器CPU进行监控
  4. LeetCode K个一组翻转链表
  5. POJ 1329 Circle Through Three Points(三角形外接圆)
  6. UVA 356 - Square Pegs And Round Holes
  7. Javascript 面向对象之继承
  8. java实现后台自动发邮件功能
  9. Ubuntu14.04搭建JSP与Servlet开发环境及其测试详解
  10. 在linux 下查询某个进程被那个程序占用