按之字形顺序打印二叉树, 把二叉树打印成多行
来源:互联网 发布:cn域名ns记录是什么 编辑:程序博客网 时间:2024/05/24 07:24
请实现一个函数按照之字形打印二叉树,即第一行按照从左到右的顺序打印,第二层按照从右至左的顺序打印,第三行按照从左到右的顺序打印,其他行以此类推
import java.util.*;/*public class TreeNode { int val = 0; TreeNode left = null; TreeNode right = null; public TreeNode(int val) { this.val = val; }}*/public class Solution { public static ArrayList<ArrayList<Integer> > Print(TreeNode pRoot) { ArrayList<ArrayList<Integer> > listAll = new ArrayList<ArrayList<Integer> >(); if (pRoot == null) return listAll; Queue<TreeNode> queue = new LinkedList<>(); queue.add(pRoot);// System.out.println(queue.size()); while (true) { ArrayList<Integer> list = new ArrayList<>(); int k = queue.size();//保存当前的队列的长度,因为后面元素加入会改变长度大小 if (k == 0) break; for (int i = 0; i < k; i++) {//移除当前行的所有元素 TreeNode p = queue.peek(); list.add(p.val); if (p.left != null) queue.add(p.left); if (p.right != null) queue.add(p.right); queue.remove(p); } listAll.add(list); } //奇数行的list进行reverse for (int i = 0; i < listAll.size(); i++) { if (i%2 != 0) { Collections.reverse(listAll.get(i)); } } return listAll; }}
从上到下按层打印二叉树,同一层结点从左至右输出。每一层输出一行。
import java.util.*;/*public class TreeNode { int val = 0; TreeNode left = null; TreeNode right = null; public TreeNode(int val) { this.val = val; }}*/public class Solution { public static ArrayList<ArrayList<Integer> > Print(TreeNode pRoot) { ArrayList<ArrayList<Integer> > listAll = new ArrayList<ArrayList<Integer> >(); if (pRoot == null) return listAll; Queue<TreeNode> queue = new LinkedList<>(); queue.add(pRoot);// System.out.println(queue.size()); while (true) { ArrayList<Integer> list = new ArrayList<>(); int k = queue.size();//保存当前的队列的长度,因为后面元素加入会改变长度大小 if (k == 0) break; for (int i = 0; i < k; i++) {//移除当前行的所有元素 TreeNode p = queue.peek(); list.add(p.val); if (p.left != null) queue.add(p.left); if (p.right != null) queue.add(p.right); queue.remove(p); } listAll.add(list); }// //奇数行的list进行reverse// for (int i = 0; i < listAll.size(); i++) {// if (i%2 != 0) {// Collections.reverse(listAll.get(i));// }// } return listAll; }}添加笔记
阅读全文
0 0
- 按之字形顺序打印二叉树, 把二叉树打印成多行
- 按之字形顺序打印二叉树
- 按之字形顺序打印二叉树
- 按之字形顺序打印二叉树
- 按之字形顺序打印二叉树
- 按之字形顺序打印二叉树
- 牛客网 | 按之字形顺序打印二叉树
- 按之字形顺序打印二叉树
- 按之字形顺序打印二叉树
- 55.按之字形顺序打印二叉树
- 按之字形顺序打印二叉树
- 按之字形顺序打印二叉树
- 按之字形顺序打印二叉树
- 按之字形顺序打印二叉树
- 【59】按之字形顺序打印二叉树
- 按之字形顺序打印二叉树
- Q61:按之字形顺序打印二叉树
- 按之字形顺序打印二叉树
- Android Webview加载网页视频播放遇到的坑
- 如何利用Mac+Github pages+jekyll来编写博客
- 零碎问题记录
- ApplicationContext hw = new ClassPathXmlApplicationContext("ApplicationContext.xml");
- UE4实现一个简单的炸弹爆炸与镜头振动效果
- 按之字形顺序打印二叉树, 把二叉树打印成多行
- 老版本Ubuntu使用apt-get不能安装软件问题
- 创建软连接
- Graphs--Data Structure
- C# 反射
- Ubuntu安装Chrome
- spring中bean的作用域single与prototype区别
- 教你如何在微信浏览器唤醒APP
- Linux I2C framework(1)_概述