编程题009--按之字形顺序打印二叉树--niuke
- 题目描述:
给定一个二叉树,返回该二叉树的之字形层序遍历,(第一层从左向右,下一层从右向左,一直这样交替) - 提示:
数据范围:0 ≤ n ≤ 1500,树上每个节点的val满足 ∣val∣<= 1500
要求:空间复杂度:O(n),时间复杂度:O(n) - 代码实现:
public class Solution {public ArrayList<ArrayList<Integer> > Print(TreeNode pRoot) {if(pRoot == null) return new ArrayList<ArrayList<Integer>>();ArrayList<ArrayList<Integer>> result = new ArrayList<ArrayList<Integer>>();Queue<TreeNode> queue = new LinkedList<>();queue.offer(pRoot);int flag = 1;Stack<TreeNode> stack = new Stack<>();while(!queue.isEmpty()){ArrayList<Integer> tmp = new ArrayList<Integer>();int len = queue.size();for(int i=0; i<len; i++){pRoot = queue.poll();tmp.add(pRoot.val);if(flag % 2 == 1){if(pRoot.left != null) stack.push(pRoot.left);if(pRoot.right != null) stack.push(pRoot.right);}else{if(pRoot.right != null) stack.push(pRoot.right);if(pRoot.left != null) stack.push(pRoot.left);}}while(!stack.isEmpty()){queue.offer(stack.pop());}result.add(tmp);flag++;}return result;}
}
编程题009--按之字形顺序打印二叉树--niuke相关推荐
- 剑指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服务器来 ...
- 按之字形顺序打印二叉树
题目描述 请实现一个函数按照之字形打印二叉树,即第一行按照从左到右的顺序打印,第二层按照从右至左的顺序打印,第三行按照从左到右的顺序打印,其他行以此类推. 此道题目可以跟 把二叉树打印成多行:htt ...
- 打印list_按之字形顺序打印二叉树
题目描述 请实现一个函数按照之字形打印二叉树,即第一行按照从左到右的顺序打印,第二层按照从右至左的顺序打印,第三行按照从左到右的顺序打印,其他行以此类推. 解题思路及代码 这题是 LiShun:把二叉 ...
- 剑指offer(C++)-JZ77:按之字形顺序打印二叉树(数据结构-树)
作者:翟天保Steven 版权声明:著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处 题目描述: 给定一个二叉树,返回该二叉树的之字形层序遍历,(第一层从左向右,下一层从右向左,一直 ...
- (剑指Offer)面试题61:按之字形顺序打印二叉树
题目: 请实现一个函数按照之字形打印二叉树,即第一行按照从左到右的顺序打印,第二层按照从右至左的顺序打印,第三行按照从左到右的顺序打印,其他行以此类推. 思路: 按照广度优先遍历来遍历二叉树,但是需要 ...
- [剑指Offer] 59.按之字形顺序打印二叉树
题目描述 请实现一个函数按照之字形打印二叉树,即第一行按照从左到右的顺序打印,第二层按照从右至左的顺序打印,第三行按照从左到右的顺序打印,其他行以此类推. [思路]先按层次遍历存入,通过设立标志位,将 ...
- 剑指Offer(Java实现)按之字形顺序打印二叉树
题目描述 请实现一个函数按照之字形打印二叉树,即第一行按照从左到右的顺序打印,第二层按照从右至左的顺序打印,第三行按照从左到右的顺序打印,其他行以此类推. 解题思路 方法一:利用两个栈的辅助空间分别存 ...
- 剑指offer-按之字形顺序打印二叉树
题目描述 请实现一个函数按照之字形打印二叉树,即第一行按照从左到右的顺序打印,第二层按照从右至左的顺序打印,第三行按照从左到右的顺序打印,其他行以此类推. 使用双向链表,先把当前行按顺序打印,再取出当 ...
最新文章
- 2018-3-21李宏毅机器学习视频笔记(十三)--“Hello Wrold” of Deep learning
- R语言基于多字段(多数据列、multiple columns)对dataframe的行数据进行排序(Ordering rows)实战:使用R原生方法、data.table、dplyr等方案
- EXP-00091错误的说明和解决方法
- MS SQL Server存储过程
- 阻止路由跳转得方式_vue路由拦截及页面跳转的设置方法
- 线程池ThreadPool知识碎片和使用经验速记
- 设计模式 — 行为型模式 — 访问者模式
- c++中类的构造函数的初始化成员列表详解
- 2013年最 “酷”科技产品回顾
- 关于删除数据仓库的数据
- HDU - 3026 Chinese Chess(二分图的必经边)
- Rolling element bearing diagnostics using the Case Western Reserve University data-学习笔记
- xfce不小心禁用了鼠标
- python local variable 'xxx' referenced before assignment
- 美国的时间格式 -- 复杂格式的日期转换 使用Date.parse(“复杂的格式”)方法。
- 名企架构师的心声:让我一次“架”个“构”
- 打怪升级的monteCarlo仿真方法
- windows服务定时重启软件的实现
- myeclipse 10破解
- 区块链通证经济——资产流动性的变革