题目描述

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

解题思路及代码

这题是

LiShun:把二叉树打印成多行​zhuanlan.zhihu.com

的升级版,代码的整体框架一样,只是需要增加一个布尔变量 reverse,作为每一层是否翻转的标志,reverse 这个变量在一层结束后要取反来保证之字形顺序。

代码如下:

public ArrayList<ArrayList<Integer>> Print(TreeNode pRoot) {ArrayList<ArrayList<Integer>> ret = new ArrayList<>();Queue<TreeNode> queue = new LinkedList<>();queue.add(pRoot);boolean reverse = false;while (!queue.isEmpty()) {ArrayList<Integer> list = new ArrayList<>();int cnt = queue.size();while (cnt-- > 0) {TreeNode node = queue.poll();if (node == null)continue;list.add(node.val);queue.add(node.left);queue.add(node.right);}if (reverse)Collections.reverse(list);      //翻转数组reverse = !reverse;     //取反if (list.size() != 0)ret.add(list);}return ret;
}

打印list_按之字形顺序打印二叉树相关推荐

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  8. 剑指offer(C++)-JZ77:按之字形顺序打印二叉树(数据结构-树)

    作者:翟天保Steven 版权声明:著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处 题目描述: 给定一个二叉树,返回该二叉树的之字形层序遍历,(第一层从左向右,下一层从右向左,一直 ...

  9. 【NC14 按之字形顺序打印二叉树】

    描述 给定一个二叉树,返回该二叉树的之字形层序遍历,(第一层从左向右,下一层从右向左,一直这样交替) 数据范围:0 \le n \le 15000≤n≤1500,树上每个节点的val满足 |val| ...

最新文章

  1. 大型互联网大型分布式架构演进之路
  2. R语言使用ggpubr包可视化分组条形图(grouped bar plot)、并添加误差条(error bar、误差条显示平均值+/-sd)、添加分组填充色、添加jitter、自定义分组抖动数据点形状
  3. Java里的堆(heap)栈(stack)和方法区(method)
  4. java 方法 示例_Java集合syncedSet()方法与示例
  5. webpack4.0各个击破(1)—— html部分
  6. 由***Web挂机产生的想法!
  7. typecho 调用评论最多热门文章
  8. 微信小程序视频学习教程
  9. 【滤波跟踪】基于多源信息融合算法实现多旋翼无人机组合导航系统含Matlab源码
  10. 智能网联汽车——传感器与驾驶辅助
  11. 内网穿透NPS使用教程
  12. Uva 10247 (组合计数)
  13. 同花顺股票交易接口定义被类实现
  14. MindMapper日期该如何进行选定
  15. python矩阵和向量乘积_矩阵与向量的乘积
  16. 运营商客户流失率分析
  17. VR线上智能园区3D可视化电子沙盘工厂大数据平台
  18. rtmp直播拉流安卓开发
  19. jquery缩放手势插件_ZooMove:jQuery插件可在悬停时缩放图像
  20. netbox怎么用?

热门文章

  1. 500万数据mysql_mysql 单表500万数据经过处理后新增到新表
  2. text html artemplete,artTemplate前端模板引擎使用说明
  3. linux ntp测试,linux 查看ntp服务器是否可访问
  4. 服务器用户设置备份,用户配置文件状态变成“备份”
  5. 计算机属性桌面打不开怎么办,win10电脑桌面图标属性打不开如何解决_win10无法打开桌面图标属性面板解决步骤...
  6. linux shell调用c 程序设计,linux – 在bash -c中设置变量
  7. 最小环 floyd java_Floyd最小环
  8. postman发送Post请求
  9. 解决conda install安装arch报错的问题
  10. Numpy ndarry按行、列求和