按之字形顺序打印二叉树
题目描述
import java.util.ArrayList;
import java.util.Stack;/*** * @author gentleKay* 题目描述* 请实现一个函数按照之字形打印二叉树,* 即第一行按照从左到右的顺序打印,* 第二层按照从右至左的顺序打印,* 第三行按照从左到右的顺序打印,其他行以此类推。*/public class Main57 {public static void main(String[] args) {TreeNode root = new TreeNode(8);root.left = new TreeNode(6);root.left.left = new TreeNode(5);root.left.right = new TreeNode(7);root.right = new TreeNode(10);root.right.left = new TreeNode(9);root.right.right = new TreeNode(11);System.out.println(Main57.Print(root));}public static class TreeNode {int val = 0;TreeNode left = null;TreeNode right = null;public TreeNode(int val) {this.val = val;}}public static ArrayList<ArrayList<Integer>> Print(TreeNode pRoot) {ArrayList<ArrayList<Integer>> aList=new ArrayList<ArrayList<Integer>>();if(pRoot==null)return aList;Stack<TreeNode> s1=new Stack<TreeNode>();s1.add(pRoot);Stack<TreeNode> s2=new Stack<TreeNode>();while(!s1.isEmpty()||!s2.isEmpty()){if(!s1.isEmpty()){ArrayList<Integer> aList2=new ArrayList<Integer>();while(!s1.isEmpty()){TreeNode p=s1.pop();aList2.add(p.val);if(p.left!=null)s2.add(p.left);if(p.right!=null)s2.add(p.right);}aList.add(aList2);}else {ArrayList<Integer> aList2=new ArrayList<Integer>();while(!s2.isEmpty()){TreeNode p=s2.pop();if(p.right!=null)s1.add(p.right);if(p.left!=null)s1.add(p.left);aList2.add(p.val);}aList.add(aList2);}}return aList;}
}
Stack 的相关方法:(注:图片太小,点击移动进行放大)
转载于:https://www.cnblogs.com/strive-19970713/p/11205526.html
按之字形顺序打印二叉树相关推荐
- 剑指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-按之字形顺序打印二叉树
题目描述 请实现一个函数按照之字形打印二叉树,即第一行按照从左到右的顺序打印,第二层按照从右至左的顺序打印,第三行按照从左到右的顺序打印,其他行以此类推. 使用双向链表,先把当前行按顺序打印,再取出当 ...
- 打印list_按之字形顺序打印二叉树
题目描述 请实现一个函数按照之字形打印二叉树,即第一行按照从左到右的顺序打印,第二层按照从右至左的顺序打印,第三行按照从左到右的顺序打印,其他行以此类推. 解题思路及代码 这题是 LiShun:把二叉 ...
- 剑指offer(C++)-JZ77:按之字形顺序打印二叉树(数据结构-树)
作者:翟天保Steven 版权声明:著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处 题目描述: 给定一个二叉树,返回该二叉树的之字形层序遍历,(第一层从左向右,下一层从右向左,一直 ...
- 【NC14 按之字形顺序打印二叉树】
描述 给定一个二叉树,返回该二叉树的之字形层序遍历,(第一层从左向右,下一层从右向左,一直这样交替) 数据范围:0 \le n \le 15000≤n≤1500,树上每个节点的val满足 |val| ...
最新文章
- mysql 学习笔记 多表查询02
- 视图的数据存放在哪里_分布式 | DBLE 是如何实现视图的?
- python网页提交表单_用Python的urllib库提交WEB表单
- redis学习-NoSQL简介
- java案例代码11-学生类的录入,查询,对象的封装
- AdGuard Home 使用设置以及DNS测速软件
- RPG Maker MZ如何导入dlc素材?
- 基于STM32的多功能MP3设计 毕业设计(论文)文献综述
- 【CSDN浏览器助手】这款插件忒好用了
- 量子混沌:相互作用如何影响量子多体系统的局域化?
- 开源python语音识别_5 款不错的开源语音识别/语音文字转换系统
- 橙单微服务的权限部分
- 学术论文中常用简写(缩写)汇总
- JPEG文件格式介绍
- 【TS】1119- TS 类这十个知识点你都掌握了么?
- HDU 1218(Blurred Vision)
- 关于GOG Galaxy 2.0提示“无法下载所需文件”问题的解决方案:
- RK3229 中文介绍
- 淘宝开放平台-速卖通客户店铺数据获取
- 教你用Python制作属于自己的表白方式,让你2021告别单身
热门文章
- MySQL设计索引的原则
- 学习Linux的一些建议
- java视频流传输_java – 使用Xuggler流式传输视频
- 【UEditor】百度编辑器插入video视频
- 【Mybatis】sqlSessionTemplate.getConnection() 遇到 java.sql.SQLException: Connection is closed
- java MD5加密
- Vue.extend
- java ftp复制文件_如何使用Java将FTP服务器上的文件复制到同一服务器上的目录中?...
- 9宫格 java_java 拼接头像9宫格
- linux中original_如何在 Linux 中整理磁盘碎片