剑指offer-将二叉树打印为多行
2016-10-30 16:56
253 查看
题目描述
从上到下按层打印二叉树,同一层结点从左至右输出。每一层输出一行。
分析
利用二叉树的层次遍历;注意:此时的层次遍历需要保存单独保存每一列的数据,所以需要一个辅助队列(共两个队列)
从上到下按层打印二叉树,同一层结点从左至右输出。每一层输出一行。
分析
利用二叉树的层次遍历;注意:此时的层次遍历需要保存单独保存每一列的数据,所以需要一个辅助队列(共两个队列)
ArrayList<ArrayList<Integer>> Print(TreeNode pRoot) { ArrayList<ArrayList<Integer>> result = new ArrayList<ArrayList<Integer>>(); if (pRoot == null) { return result; } TreeNode s1 = null; TreeNode s2 = null; Queue<TreeNode> queue1 = new LinkedList<>(); Queue<TreeNode> queue2 = new LinkedList<>(); // 备用队列(需要画图理解) queue1.add(pRoot); while (!queue1.isEmpty()) { ArrayList<Integer> list = new ArrayList<Integer>(); // 将一层的所有值放入list中(queue1的作用),清空queue1并将数据转移到queue2 while (!queue1.isEmpty()) { s1 = queue1.poll(); queue2.add(s1); list.add(s1.val); } result.add(list); // queue2保存相当于复制没有清空的queue1,然后将下一层所有节点转给queue1 while (!queue2.isEmpty()) { s2 = queue2.poll(); if (s2.left != null) { queue1.add(s2.left); } if (s2.right != null) { queue1.add(s2.right); } } } return result; }
相关文章推荐
- 剑指offer——把二叉树打印成多行
- 剑指offer——把二叉树打印成多行
- 剑指offer | 训练题59:把二叉树打印成多行
- 【剑指Offer】面试题60:把二叉树打印成多行
- 剑指offer面试题[60]-将二叉树打印成多行
- 剑指Offer面试题60:把二叉树打印成多行 Java实现
- 剑指offer-面试题60-把二叉树打印成多行
- 剑指offer—把二叉树打印成多行
- 剑指Offer—60—把二叉树打印成多行
- 剑指offer--面试题60:把二叉树打印成多行
- 剑指offer面试题60 把二叉树打印成多行(Java实现)
- 剑指offer 面试题60 把二叉树打印成多行
- 【剑指Offer】把二叉树打印成多行
- 剑指offer——60.把二叉树打印成多行
- 剑指Offer--060-把二叉树打印成多行
- 剑指offer_把二叉树打印成多行+之字形
- 剑指offer-----多行打印二叉树(java版)
- 剑指offer-60.把二叉树打印成多行
- 剑指offer——把二叉树打印成多行
- 剑指offer----把二叉树打印成多行----java实现