题目描述

请实现一个函数按照之字形打印二叉树,即第一行按照从左到右的顺序打印,第二层按照从右至左的顺序打印,第三行按照从左到右的顺序打印,其他行以此类推。

【思路】先按层次遍历存入,通过设立标志位,将偶数层翻转。

 1 /*
 2 struct TreeNode {
 3     int val;
 4     struct TreeNode *left;
 5     struct TreeNode *right;
 6     TreeNode(int x) :
 7             val(x), left(NULL), right(NULL) {
 8     }
 9 };
10 */
11 class Solution
12 {
13 public:
14     vector<vector<int> > Print(TreeNode* pRoot)
15     {
16         vector<vector<int> > res;
17         if(pRoot == NULL)
18             return res;
19         queue<TreeNode*> Que;
20         Que.push(pRoot);
21         bool flag = false;
22         while(!Que.empty())
23         {
24             vector<int> vec;
25             int size = Que.size();
26             for(int i = 0; i < size; i ++)
27             {
28                 TreeNode* temp = Que.front();
29                 vec.push_back(temp->val);
30                 if(temp->left)
31                     Que.push(temp->left);
32                 if(temp->right)
33                     Que.push(temp->right);
34                 Que.pop();
35             }
36             if(flag)
37                 std::reverse(vec.begin(),vec.end());
38             flag = !flag;
39             res.push_back(vec);
40         }
41         return res;
42     }
43
44 };

转载于:https://www.cnblogs.com/lca1826/p/6574089.html

[剑指Offer] 59.按之字形顺序打印二叉树相关推荐

  1. 剑指 Offer 32 . 从上到下打印二叉树

    main函数测试代码: 按标准输入输出,比如输入: 3,9,20,null,null,15,7 public static void main(String[] args) {//输入3,9,20,n ...

  2. 剑指offer 32. 从上到下打印二叉树

    声明:本系列博客是对何海涛<剑指offer>的关键点总结. 1.不分行从上到下打印二叉树 1.1. 问题描述 从上到下打印出二叉树的每一个结点,同一层的结点按照从左到右的顺序打印. 如二叉 ...

  3. 剑指offer之从上到下打印二叉树

    从上到下打印出二叉树的每个节点,同一层的节点按照从左到右的顺序打印. 例如: 给定二叉树: [3,9,20,null,null,15,7], 返回: [3,9,20,15,7] 来源:力扣(LeetC ...

  4. 剑指offer——32.从上到下打印二叉树

    题目: 从上往下打印出二叉树的每个节点,同层节点从左至右打印. 知识点: 像这种不是按照指针顺序打印的都需要引入辅助空间,由于分析可知,先进先出,因此我们引入了两端都可进出的队列deque,常用操作, ...

  5. 《剑指offer》从上往下打印二叉树

    题目:从上往下打印出二叉树的每个节点,同层节点从左至右打印. 解析:此题利用队列可以很好的解决层次打印,只需要按顺序入队以及出队就可以了(一点说明:root为null的时候需要考虑,java中的队列是 ...

  6. 剑指offer:从上往下打印二叉树

    文章目录 分析 来源 分析 思路 典型的bfs模板题,这里使用STL中的queue,没用数组模拟队列. STL的思路:初始化队列时,根root入队:对于bfs主体过程while循环内,取队头元素,队头 ...

  7. 《剑指offer》-- 从上往下打印二叉树、二叉搜素树的后序遍历、二叉树中和为某一值的路径、二叉树与双向链表

    一.从上往下打印二叉树: 1.题目: 上往下打印出二叉树的每个节点,同层节点从左至右打印. 2.解题思路: 用arraylist模拟一个队列来存储相应的TreeNode. 3.代码实现: public ...

  8. 剑指offer之先序非递归打印二叉树

    1 问题 先序非递归打印二叉树 比如二叉树如下 * 2* 3 5 * 1 4 2 3 * 3 2 1 5 1 4 2 3 先序原则:中左右打印节点,如果左边有节点继续要打做节点,打印会是如下结果 2 ...

  9. 剑指Offer之从上往下打印二叉树

    题目描述 从上往下打印出二叉树的每个节点,同层节点从左至右打印. 解题思路 二叉树的层次遍历,水题...有一个坑:如果root是空的,直接返回空vector,一定要注意边界条件!!!!!!!!! AC ...

最新文章

  1. 洛古 P1373 小a和uim之大逃离
  2. USNews 2020美国大学排名公布:UCLA超越伯克利;计算机专业MIT第一,斯坦福跌出前四...
  3. 【Android 逆向】ART 脱壳 ( DexClassLoader 脱壳 | exec_utils.cc 中执行 Dex 编译为 Oat 文件的 Exec 和 ExecAndReturnC函数 )
  4. 我也来说说js的事件机制
  5. SAP收购sysbase
  6. 【常见笔试面试算法题12续集三】动态规划算法案例分析3 LIS练习题(最长上升子序列)
  7. Java 10 常用集合继承关系图
  8. vue怎么使用php调取数据,vue 数据操作
  9. 解决172.17 或者172.18 机房环境下harbor服务器不通的问题
  10. 浏览器占满整个屏幕_浏览器无法最大化 为什么我的IE浏览器最大化时,会铺满整个电脑屏...
  11. 把复杂变简单,能产生颠覆的力量
  12. SQL学习笔记四之MySQL数据操作
  13. docfx daylybuild
  14. 树莓派3B通过mentohust登录锐捷校园网有线端,并创建WIFI(开热点)供其他设备使用,同时实现开机自启动
  15. B站批量下载工具——下载姬
  16. System.setOut()重定向输出解释
  17. LeetCode - 807. 保持城市天际线 - Java
  18. 全美航班停飞原因曝光/ 米哈游辟谣年终奖108薪/ 苹果正开发触摸屏Mac…今日更多新鲜事在此...
  19. 【小沐学qt】生成二维码
  20. Aurora 8b/10b 协议和IP核设置

热门文章

  1. winform_界面美化设计_显示/隐藏侧边栏
  2. g++ 安装python_mac编译安装faiss
  3. bootstrap五星评分_星型打分插件 bootstrap-rating-input
  4. 强化学习ppt_机器学习原理、算法与应用配套PPT第四部分(深度学习概论、自动编码器、强化学习、聚类算法、半监督学习等)...
  5. 退出页面 数据保留_设计师常用的数据分析指标
  6. js php 获取时间倒计时_,js实现倒计时及时间对象
  7. 小学教师计算机国培培训总结,小学教师国培个人研修总结
  8. python开发环境和运行环境的区别_Django 开发环境与生产环境的区分详解
  9. C++对象模型4——多重继承的对象内存模型、vptr与vtbl的创建与重置的时机、不要在含有虚函数的类的构造函数中调用memset
  10. C++保存不同的图片格式