从上往下打印二叉树
题目描述
从上往下打印出二叉树的每个节点,同层节点从左至右打印。
思路:用队列保存将要打印的节点,出队列时,将左节点和右节点分别加入队列当中,直到队列为空,打印完毕。
public ArrayList<Integer> PrintFromTopToBottom(TreeNode root) {
if(root==null){
return null;
}
Queue<TreeNode> queue=new ArrayBlockingQueue<TreeNode>(0);
ArrayList<Integer> list=new ArrayList<Integer>();
queue.offer(root);
while(!queue.isEmpty()){
TreeNode node=queue.poll();
if(node.left!=null){
queue.offer(node.left);
}
if(node.right!=null){
queue.offer(node.right);
}
list.add(node.val);
}
return list;
}