按之字形顺序打印二叉树, 把二叉树打印成多行
2017-09-30 14:36
337 查看
请实现一个函数按照之字形打印二叉树,即第一行按照从左到右的顺序打印,第二层按照从右至左的顺序打印,第三行按照从左到右的顺序打印,其他行以此类推
从上到下按层打印二叉树,同一层结点从左至右输出。每一层输出一行。
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; } } 添加笔记
相关文章推荐
- 按之字形顺序打印二叉树
- 按之字形顺序打印二叉树
- 二叉树17:按之字形顺序打印二叉树
- 剑指Offer_59_按之字形顺序打印二叉树
- 剑指offer——面试题61:按之字形顺序打印二叉树
- 剑指offer-按之字形顺序打印二叉树-php
- 【剑指Offer】面试题61:按之字形顺序打印二叉树
- 剑指offer-按之字形顺序打印二叉树
- 按之字形顺序打印二叉树
- (剑指Offer)面试题61:按之字形顺序打印二叉树
- 剑指offer-59.按之字形顺序打印二叉树
- 按之字形顺序打印二叉树
- 按之字形顺序打印二叉树
- 剑指offer 按之字形顺序打印二叉树
- 剑指offer-面试题61:按之字形顺序打印二叉树
- 按之字形顺序打印二叉树
- 按之字形顺序打印二叉树(剑指offer+队栈的应用)
- 按之字形顺序打印二叉树
- 按之字形顺序打印二叉树
- 按之字形顺序打印二叉树