二叉树的打印
来源:互联网 发布:法国斗牛犬 知乎 编辑:程序博客网 时间:2024/06/05 15:22
有一棵二叉树,请设计一个算法,按照层次打印这棵二叉树。
给定二叉树的根结点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 if(root==null) return null; LinkedList<TreeNode> queue=new LinkedList<TreeNode>(); ArrayList<Integer> arr=new ArrayList<Integer>(); ArrayList<ArrayList<Integer>> ans=new ArrayList<ArrayList<Integer>>(); TreeNode last=root;//初始化根节点为last TreeNode nlast=null; TreeNode temp=null;//存储变化内容 queue.add(last); while(!queue.isEmpty()){ temp=queue.poll();//poll()——相当于先get然后再remove掉,就是查看的同时,也将这个元素从容器中删除掉。获取并移除此列表的头(第一个元素) arr.add(temp.val);//val——val 是可变参数,可以理解为是一个Object类型的数组 if(temp.left!=null){ queue.add(temp.left); nlast=temp.left; } if(temp.right!=null){ queue.add(temp.right); nlast=temp.right; } if(temp==last){ ans.add(arr);//即ans+arr arr=new ArrayList<Integer>(); last=nlast; } } int[][] a=new int[ans.size()][]; for(int i=0;i<ans.size();i++){ a[i]=new int[ans.get(i).size()]; for(int j=0;j<ans.get(i).size();j++){ a[i][j]=ans.get(i).get(j); } } return a; }}
0 0
- 二叉树的打印
- 打印二叉树的图
- 打印二叉树的深度
- 打印二叉树的路径
- 二叉树的按层打印和ZigZag打印
- 二叉树的按层打印与ZigZag打印
- 二叉树的建立和打印
- 二叉树的建立、遍历、打印
- 打印二叉树的所有路径
- 打印二叉树所有的路径
- 打印二叉树的边缘节点
- 打印二叉树的边缘节点
- 打印二叉树的边缘节点
- 二叉树层次遍历的螺旋打印
- 二叉树的建立、遍历、打印
- 3.10分层打印二叉树的节点
- 打印二叉树的某一层
- 打印二叉树的所有路径
- objective-C: NSString应该用…
- OC中的一些技巧
- VS2015 C++编译失败,提示link1171,无法加载mspdb140.dll错误解决方法!
- Python文件
- OC学习之NSDictionary,NSSet
- 二叉树的打印
- OC学习总结之KVC KVO 通知
- NSTimer知识点和倒计时的实现
- objective-c 编程总结(第四…
- [转]IOS Quartz 2D 学习(1…
- Codeforces Round #396 (Div. 2)E(树形dp,按位运算,好题)
- 达晨创投投资列表
- [转]IOS Quartz 2D 学习(2…
- UIView用户事件响应