在线编程--层次打印二叉树
来源:互联网 发布:旅行结婚一般花费知乎 编辑:程序博客网 时间:2024/05/17 22:42
题目信息:
有一棵二叉树,请设计一个算法,按照层次打印这棵二叉树。
给定二叉树的根结点root,请返回打印结果,结果按照每一层一个数组进行储存,所有数组的顺序按照层数从上往下,且每一层的数组内元素按照从左往右排列。保证结点数小于等于500。
import java.util.*;/*public class TreeNode { int val = 0; TreeNode left = null; TreeNode right = null; public TreeNode(int val) { this.val = val; }}*/public class TreePrinter { public int[][] printTree(TreeNode root) { // write code here TreeNode last=root; TreeNode nlast=root; LinkedList<TreeNode> queue=new LinkedList<TreeNode>(); //设置队列,层次遍历二叉树 List<List<Integer>> lists=new ArrayList<List<Integer>>(); //存储二叉树信息 queue.add(root); List<Integer> list=new ArrayList<Integer>(); while(!queue.isEmpty()){ TreeNode node=queue.poll(); list.add(node.val); //取出队列头的值存入数组中 if(node.left!=null){ queue.add(node.left); nlast=node.left; //nlast表示下一行的节点,nlast一直往后走,直到走到该行的最后一个 } if(node.right!=null){ queue.add(node.right); nlast=node.right; } if(node==last){ //表示进行到最后一个,也就是说该行的节点遍历完毕,进行下一行 lists.add(list); list=new ArrayList<Integer>(); last=nlast; } } int n=lists.size(); int[][] res=new int[n][]; for(int i=0;i<n;i++){ res[i]=new int[lists.get(i).size()]; for(int j=0;j<res[i].length;j++){ res[i][j]=lists.get(i).get(j); } } return res; }}
0 0
- 在线编程--层次打印二叉树
- 层次打印二叉树
- 层次打印二叉树
- 层次打印二叉树
- 剑指offer 编程题(21):二叉树层次打印
- 层次结构打印二叉树
- 按层次打印二叉树
- 二叉树层次遍历打印
- Python二叉树层次打印
- 按照层次打印二叉树
- 按层次打印二叉树元素
- 二叉树层次遍历的螺旋打印
- 按层次方式打印二叉树
- 怎样按层次打印二叉树
- 二叉树的层次遍历(打印)
- 按照层次遍历并打印二叉树
- 把二叉树打印成多行(二叉树的层次遍历)
- 二叉树的层次遍历,从上到下和从下到上分层打印
- Forrest 2015年第三季度内存网格分析报告
- myeclipse更换主题
- 访问远程服务
- java虚拟机底层结构详解
- Java关键字
- 在线编程--层次打印二叉树
- Mybatis报错
- 从《奋斗》到《欢乐颂》:十年之间,时代精神已变
- 发送自定义广播
- 监测应用状态
- 经典算法<一>迷宫问题 2.单条路径 BFS求解 C++实现
- 监控SD卡的状态
- android 之讯飞语音接入的输出(2)
- 短信防火墙