剑指offer(五十三)之按之字形顺序打印二叉树
来源:互联网 发布:淘宝店铺首页链接地址 编辑:程序博客网 时间:2024/05/17 02:46
题目描述
请实现一个函数按照之字形打印二叉树,即第一行按照从左到右的顺序打印,第二层按照从右至左的顺序打印,第三行按照从左到右的顺序打印,其他行以此类推。
代码:
<span style="color:#000099;">import java.util.ArrayList;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 ArrayList<ArrayList<Integer> > Print(TreeNode pRoot) { ArrayList<ArrayList<Integer>> result = new ArrayList<ArrayList<Integer>>(); if(pRoot == null){ return result; } boolean leftToRight = true; Queue<TreeNode> layer = new LinkedList<TreeNode>(); ArrayList<Integer> layerList = new ArrayList<Integer>(); layer.add(pRoot); int start = 0, end = 1; while(!layer.isEmpty()){ TreeNode cur = layer.remove(); layerList.add(cur.val); start++; if(cur.left!=null){ layer.add(cur.left); } if(cur.right!=null){ layer.add(cur.right); } if(start == end){ end = layer.size(); start = 0; if(!leftToRight){ result.add(reverse(layerList)); }else{ result.add(layerList); } leftToRight = !leftToRight; layerList = new ArrayList<Integer>(); } } return result; } private ArrayList reverse(ArrayList<Integer> layerList) { int length = layerList.size(); ArrayList<Integer> reverseList = new ArrayList<Integer>(); for(int i = length-1; i >= 0;i--){ reverseList.add(layerList.get(i)); } return reverseList; }}</span>
2 0
- 剑指offer(五十三)之按之字形顺序打印二叉树
- 剑指offer--按之字形顺序打印二叉树
- 《剑指offer》按之字形顺序打印二叉树
- 剑指offer—按之字形顺序打印二叉树
- 《剑指offer》——按之字形顺序打印二叉树
- 剑指offer:按之字形顺序打印二叉树
- 剑指offer:按之字形顺序打印二叉树
- [剑指offer]按之字形顺序打印二叉树
- 剑指Offer--061-按之字形顺序打印二叉树
- 《剑指offer》:[61]按之字形顺序打印二叉树
- 剑指offer(56)-按之字形顺序打印二叉树
- 剑指offer——按之字形顺序打印二叉树
- 剑指offer|按之字形顺序打印二叉树
- 剑指offer-按之字形顺序打印二叉树
- 剑指offer-----按之字形顺序打印二叉树(java版)
- 【剑指Offer】按之字形顺序打印二叉树
- 剑指offer-按之字形顺序打印二叉树-php
- 剑指offer-59.按之字形顺序打印二叉树
- 深入学习java并发编程:内存模型(五)锁
- 手机开发实战119——蓝牙介绍3
- Matlab画图,去掉周围白边
- hdu 2619 Love you Ten thousand years(数论,待解决)
- 手机开发实战120——蓝牙介绍4
- 剑指offer(五十三)之按之字形顺序打印二叉树
- java/android 设计模式学习笔记(9)---代理模式
- 手机开发实战121——蓝牙介绍5
- java设计模式详细描述(部分源代码)
- java中的事务
- 好用的第三方网站ios
- java 类的继承和多态 2
- 手机开发实战122——蓝牙介绍6
- Android textview设置不同的颜色和大小