从上到下打印二叉树
来源:互联网 发布:机械手g402鼠标宏编程 编辑:程序博客网 时间:2024/06/05 11:30
题目描述
从上到下按层打印二叉树,同一层结点从左至右输出。每一层输出一行。
解题思路
类似之子形打印,但这里是顺序打印,所以可以用两个队列。
java实现代码:
import java.util.ArrayList;import java.util.Queue;import java.util.LinkedList;/*public class TreeNode { int val = 0; TreeNode left = null; TreeNode right = null; public TreeNode(int val) { this.val = val; }}*/public class Solution { ArrayList<ArrayList<Integer> > Print(TreeNode root) { ArrayList<ArrayList<Integer>> list=new ArrayList<ArrayList<Integer>>(); if(root==null) return list; Queue<TreeNode> queue1=new LinkedList<TreeNode>(); Queue<TreeNode> queue2=new LinkedList<TreeNode>(); queue1.add(root); while(!queue1.isEmpty() || !queue2.isEmpty()){ ArrayList<Integer> tmp1=new ArrayList<Integer>(); while(!queue1.isEmpty()){ TreeNode node=queue1.poll(); tmp1.add(node.val); if(node.left!=null) queue2.add(node.left); if(node.right!=null) queue2.add(node.right); } //注意:这里要判断tmp list是否为空,因为当queue为空时,上面代码不执行,这样tmp list为空,为空的tmp list不能加入最后的结果list中去 if(!tmp1.isEmpty()){ list.add(tmp1); } ArrayList<Integer> tmp2=new ArrayList<Integer>(); while(!queue2.isEmpty()){ TreeNode node=queue2.poll(); tmp2.add(node.val); if(node.left!=null) queue1.add(node.left); if(node.right!=null) queue1.add(node.right); } if(!tmp2.isEmpty()){ list.add(tmp2); } } return list; }}
2 0
- 从上到下打印二叉树
- 从上到下打印二叉树
- 从上到下打印二叉树
- 从上到下打印二叉树
- 从上到下打印二叉树
- 从上到下打印二叉树
- 从上到下打印二叉树
- 从上到下打印二叉树
- 从上到下打印二叉树-剑指offer23题
- C++ 从上到下,从左至右打印二叉树
- java之从上到下打印二叉树
- 从上到下按层打印二叉树
- 从上到下从左到右打印二叉树
- 题目23:从上到下打印二叉树
- 剑指offer23:从上到下打印二叉树
- 面试题 23: 从上到下打印二叉树
- 面试题23:从上到下打印二叉树
- 剑指offer21从上到下打印二叉树
- Expected a component class,got[object Object]
- bzoj 1013 [JSOI2008]球形空间产生器sphere
- package.json 里面的dependencies和devDependencies的区别
- 第95篇 ES之安装Elastica及总结安装Elastica
- Lab、TextView文字两端对齐(中英文、标点、空格换行)
- 从上到下打印二叉树
- 安装DBF Commander步骤
- 文章标题
- java学习 五、条件语句 三目运算
- POS消费小票(签购单)上的“秘密”
- openstack中的超配比
- Sass语法详解
- 月份选择控件
- MyBatis关联查询