描述

给定一个二叉树,返回该二叉树的之字形层序遍历,(第一层从左向右,下一层从右向左,一直这样交替)

数据范围:0 \le n \le 15000≤n≤1500,树上每个节点的val满足 |val| <= 100∣val∣<=100
要求:空间复杂度:O(n)O(n),时间复杂度:O(n)O(n)

例如:
给定的二叉树是{1,2,3,#,#,4,5}

该二叉树之字形层序遍历的结果是

[

[1],

[3,2],

[4,5]

]

示例1

输入:

{1,2,3,#,#,4,5}

返回值:

[[1],[3,2],[4,5]]

说明:

如题面解释,第一层是根节点,从左到右打印结果,第二层从右到左,第三层从左到右。    

示例2

输入:

{8,6,10,5,7,9,11}

返回值:

[[8],[10,6],[5,7,9,11]]

示例3

输入:

{1,2,3,4,5}

返回值:

[[1],[3,2],[4,5]]

解题报告:

可以像代码里一样,用两个队列。或者用一个队列+一个cnt来保存某一层的节点个数。

/*
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> > ans;if(!pRoot) return ans;queue<TreeNode* > q[2];int flag = 0;q[flag].push(pRoot);while(q[flag].size()) {vector<int> t;while(q[flag].size()) {TreeNode* cur = q[flag].front();q[flag].pop();t.push_back(cur->val);if(cur->left) q[!flag].push(cur->left);if(cur->right) q[!flag].push(cur->right);}if(flag) reverse(t.begin(), t.end());ans.push_back(t);flag = !flag;}return ans;}};

【NC14 按之字形顺序打印二叉树】相关推荐

  1. 牛客题霸 NC14 按之字形顺序打印二叉树

    https://www.nowcoder.com/practice/91b69814117f4e8097390d107d2efbe0 解决方案 Go func Print(pRoot *TreeNod ...

  2. 按之字形顺序打印二叉树

    题目描述 请实现一个函数按照之字形打印二叉树,即第一行按照从左到右的顺序打印,第二层按照从右至左的顺序打印,第三行按照从左到右的顺序打印,其他行以此类推. 此道题目可以跟  把二叉树打印成多行:htt ...

  3. 剑指offer——面试题61:按之字形顺序打印二叉树

    剑指offer--面试题61:按之字形顺序打印二叉树 Solution1: 基于上一题的解法,缺点:效率低下! /* struct TreeNode {int val;struct TreeNode ...

  4. java面试(二十六)--(1)J2EE中常用名词(2)讲一下redis的主从复制怎么做的?(3)请谈谈你对Javaweb开发中的监听器的理解?(4)按之字形顺序打印二叉树(5)内部类大全

    1.J2EE中常用名词 web容器:给处于其中的应用程序组件(JSP,SERVLET)提供一个环境,使 JSP,SERVLET直接跟容器中的环境变量接**互,不必关注其它系统问题.主要有WEB服务器来 ...

  5. (剑指Offer)面试题61:按之字形顺序打印二叉树

    题目: 请实现一个函数按照之字形打印二叉树,即第一行按照从左到右的顺序打印,第二层按照从右至左的顺序打印,第三行按照从左到右的顺序打印,其他行以此类推. 思路: 按照广度优先遍历来遍历二叉树,但是需要 ...

  6. [剑指Offer] 59.按之字形顺序打印二叉树

    题目描述 请实现一个函数按照之字形打印二叉树,即第一行按照从左到右的顺序打印,第二层按照从右至左的顺序打印,第三行按照从左到右的顺序打印,其他行以此类推. [思路]先按层次遍历存入,通过设立标志位,将 ...

  7. 剑指Offer(Java实现)按之字形顺序打印二叉树

    题目描述 请实现一个函数按照之字形打印二叉树,即第一行按照从左到右的顺序打印,第二层按照从右至左的顺序打印,第三行按照从左到右的顺序打印,其他行以此类推. 解题思路 方法一:利用两个栈的辅助空间分别存 ...

  8. 剑指offer-按之字形顺序打印二叉树

    题目描述 请实现一个函数按照之字形打印二叉树,即第一行按照从左到右的顺序打印,第二层按照从右至左的顺序打印,第三行按照从左到右的顺序打印,其他行以此类推. 使用双向链表,先把当前行按顺序打印,再取出当 ...

  9. 打印list_按之字形顺序打印二叉树

    题目描述 请实现一个函数按照之字形打印二叉树,即第一行按照从左到右的顺序打印,第二层按照从右至左的顺序打印,第三行按照从左到右的顺序打印,其他行以此类推. 解题思路及代码 这题是 LiShun:把二叉 ...

最新文章

  1. 【皇甫】☀说说那些选择器
  2. [基础]iOS 可视化编程(全系列)
  3. Marketing Cloud launchpad中的meta标签
  4. 基于Tablestore多元索引打造亿量级店铺搜索系统
  5. FCKeidtor的toolbarset的设置
  6. js 判断字符串为空的方法
  7. 6.1、Android Studio的Android Monitor概览
  8. android应用热修复与插件化实践之路
  9. NoSql数据库确实非常适合网站
  10. php7 imagick扩展,php7如何安装imagick扩展
  11. Gale-Shapley 稳定匹配算法的C++实现
  12. Geos库学习之(二)——使用Geos库创建简单的几何对象
  13. 中国石油大学(北京)-《 公共社交礼仪 》-​​​​​​​第一阶段在线作业
  14. 2021年应用市场放假安排
  15. python海龟画图函数汇总
  16. PHP初级程序员出路
  17. 日本最惨数学天才!37岁裸辞,房子被政府没收,向全村人乞讨,一家五口只能吃野菜.........
  18. 半导体产业链全梳理 哪个细分领域更具投资价值?
  19. 数据分析报告的 6 个步骤
  20. cmd 组合命令和管道命令的使用

热门文章

  1. boost helloworlld
  2. Oracle数据库游标操作
  3. 自动产生fsm代码的工具_代码自动生成工具
  4. iptables nat实验_【零基础学云计算】LVS负载均衡群集之NAT模式搭建 (实践篇)...
  5. 1到n阶乘算法的改进
  6. ORACLE使用copy方式存储迁移,详细讲解Oracle数据库的数据迁移方法
  7. python每周小测验答案_python第一周小测验答案Centos下更新Python版本
  8. vue v-if判断数组元素的值_Vue项目上线做的一些基本优化
  9. linux修改某个用户的数组,linux-shell编程1:变量和数组
  10. 前驱和后驱什么意思_为什么只有豪车才敢用后驱