打印list_按之字形顺序打印二叉树
题目描述
请实现一个函数按照之字形打印二叉树,即第一行按照从左到右的顺序打印,第二层按照从右至左的顺序打印,第三行按照从左到右的顺序打印,其他行以此类推。
解题思路及代码
这题是
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_按之字形顺序打印二叉树相关推荐
- 按之字形顺序打印二叉树
题目描述 请实现一个函数按照之字形打印二叉树,即第一行按照从左到右的顺序打印,第二层按照从右至左的顺序打印,第三行按照从左到右的顺序打印,其他行以此类推. 此道题目可以跟 把二叉树打印成多行:htt ...
- 剑指offer——面试题61:按之字形顺序打印二叉树
剑指offer--面试题61:按之字形顺序打印二叉树 Solution1: 基于上一题的解法,缺点:效率低下! /* struct TreeNode {int val;struct TreeNode ...
- java面试(二十六)--(1)J2EE中常用名词(2)讲一下redis的主从复制怎么做的?(3)请谈谈你对Javaweb开发中的监听器的理解?(4)按之字形顺序打印二叉树(5)内部类大全
1.J2EE中常用名词 web容器:给处于其中的应用程序组件(JSP,SERVLET)提供一个环境,使 JSP,SERVLET直接跟容器中的环境变量接**互,不必关注其它系统问题.主要有WEB服务器来 ...
- (剑指Offer)面试题61:按之字形顺序打印二叉树
题目: 请实现一个函数按照之字形打印二叉树,即第一行按照从左到右的顺序打印,第二层按照从右至左的顺序打印,第三行按照从左到右的顺序打印,其他行以此类推. 思路: 按照广度优先遍历来遍历二叉树,但是需要 ...
- [剑指Offer] 59.按之字形顺序打印二叉树
题目描述 请实现一个函数按照之字形打印二叉树,即第一行按照从左到右的顺序打印,第二层按照从右至左的顺序打印,第三行按照从左到右的顺序打印,其他行以此类推. [思路]先按层次遍历存入,通过设立标志位,将 ...
- 剑指Offer(Java实现)按之字形顺序打印二叉树
题目描述 请实现一个函数按照之字形打印二叉树,即第一行按照从左到右的顺序打印,第二层按照从右至左的顺序打印,第三行按照从左到右的顺序打印,其他行以此类推. 解题思路 方法一:利用两个栈的辅助空间分别存 ...
- 剑指offer-按之字形顺序打印二叉树
题目描述 请实现一个函数按照之字形打印二叉树,即第一行按照从左到右的顺序打印,第二层按照从右至左的顺序打印,第三行按照从左到右的顺序打印,其他行以此类推. 使用双向链表,先把当前行按顺序打印,再取出当 ...
- 剑指offer(C++)-JZ77:按之字形顺序打印二叉树(数据结构-树)
作者:翟天保Steven 版权声明:著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处 题目描述: 给定一个二叉树,返回该二叉树的之字形层序遍历,(第一层从左向右,下一层从右向左,一直 ...
- 【NC14 按之字形顺序打印二叉树】
描述 给定一个二叉树,返回该二叉树的之字形层序遍历,(第一层从左向右,下一层从右向左,一直这样交替) 数据范围:0 \le n \le 15000≤n≤1500,树上每个节点的val满足 |val| ...
最新文章
- 大型互联网大型分布式架构演进之路
- R语言使用ggpubr包可视化分组条形图(grouped bar plot)、并添加误差条(error bar、误差条显示平均值+/-sd)、添加分组填充色、添加jitter、自定义分组抖动数据点形状
- Java里的堆(heap)栈(stack)和方法区(method)
- java 方法 示例_Java集合syncedSet()方法与示例
- webpack4.0各个击破(1)—— html部分
- 由***Web挂机产生的想法!
- typecho 调用评论最多热门文章
- 微信小程序视频学习教程
- 【滤波跟踪】基于多源信息融合算法实现多旋翼无人机组合导航系统含Matlab源码
- 智能网联汽车——传感器与驾驶辅助
- 内网穿透NPS使用教程
- Uva 10247 (组合计数)
- 同花顺股票交易接口定义被类实现
- MindMapper日期该如何进行选定
- python矩阵和向量乘积_矩阵与向量的乘积
- 运营商客户流失率分析
- VR线上智能园区3D可视化电子沙盘工厂大数据平台
- rtmp直播拉流安卓开发
- jquery缩放手势插件_ZooMove:jQuery插件可在悬停时缩放图像
- netbox怎么用?
热门文章
- 500万数据mysql_mysql 单表500万数据经过处理后新增到新表
- text html artemplete,artTemplate前端模板引擎使用说明
- linux ntp测试,linux 查看ntp服务器是否可访问
- 服务器用户设置备份,用户配置文件状态变成“备份”
- 计算机属性桌面打不开怎么办,win10电脑桌面图标属性打不开如何解决_win10无法打开桌面图标属性面板解决步骤...
- linux shell调用c 程序设计,linux – 在bash -c中设置变量
- 最小环 floyd java_Floyd最小环
- postman发送Post请求
- 解决conda install安装arch报错的问题
- Numpy ndarry按行、列求和