题目描述

请实现一个函数按照之字形打印二叉树,即第一行按照从左到右的顺序打印,第二层按照从右至左的顺序打印,第三行按照从左到右的顺序打印,其他行以此类推。
此道题目可以跟  把二叉树打印成多行:https://www.cnblogs.com/strive-19970713/p/11205594.html 进行比较学习。
按之字形顺序打印二叉树:使用的是 栈; 出栈,入栈;先入后出,后入先出。
把二叉树打印成多行:使用的 链表;我用的方法是 固定删除编号为0 的数。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

最新文章

  1. mysql 学习笔记 多表查询02
  2. 视图的数据存放在哪里_分布式 | DBLE 是如何实现视图的?
  3. python网页提交表单_用Python的urllib库提交WEB表单
  4. redis学习-NoSQL简介
  5. java案例代码11-学生类的录入,查询,对象的封装
  6. AdGuard Home 使用设置以及DNS测速软件
  7. RPG Maker MZ如何导入dlc素材?
  8. 基于STM32的多功能MP3设计 毕业设计(论文)文献综述
  9. 【CSDN浏览器助手】这款插件忒好用了
  10. 量子混沌:相互作用如何影响量子多体系统的局域化?
  11. 开源python语音识别_5 款不错的开源语音识别/语音文字转换系统
  12. 橙单微服务的权限部分
  13. 学术论文中常用简写(缩写)汇总
  14. JPEG文件格式介绍
  15. 【TS】1119- TS 类这十个知识点你都掌握了么?
  16. HDU 1218(Blurred Vision)
  17. 关于GOG Galaxy 2.0提示“无法下载所需文件”问题的解决方案:
  18. RK3229 中文介绍
  19. 淘宝开放平台-速卖通客户店铺数据获取
  20. 教你用Python制作属于自己的表白方式,让你2021告别单身

热门文章

  1. MySQL设计索引的原则
  2. 学习Linux的一些建议
  3. java视频流传输_java – 使用Xuggler流式传输视频
  4. 【UEditor】百度编辑器插入video视频
  5. 【Mybatis】sqlSessionTemplate.getConnection() 遇到 java.sql.SQLException: Connection is closed
  6. java MD5加密
  7. Vue.extend
  8. java ftp复制文件_如何使用Java将FTP服务器上的文件复制到同一服务器上的目录中?...
  9. 9宫格 java_java 拼接头像9宫格
  10. linux中original_如何在 Linux 中整理磁盘碎片