题目:从上往下打印出二叉树的每个节点,同层节点从左至右打印。
解析:此题利用队列可以很好的解决层次打印,只需要按顺序入队以及出队就可以了(一点说明:root为null的时候需要考虑,java中的队列是Queue,实现类LinkedList,而方法poll是移除并返回队首元素)
import java.util.ArrayList; /** public class TreeNode { int val = 0; TreeNode left = null; TreeNode right = null; public TreeNode(int val) { this.val = val; } } */ import java.util.ArrayList; import java.util.LinkedList; import java.util.List; import java.util.Queue; public class Solution { public ArrayList<Integer> PrintFromTopToBottom(TreeNode root) { ArrayList<Integer> result = new ArrayList<>(); Queue<TreeNode> queue = new LinkedList<TreeNode>(); if(root==null){ return result; } queue.add(root); while(!queue.isEmpty()){//队列不为空 TreeNode node = queue.poll();//队首出队 result.add(node.val); if(node.left!=null){ queue.add(node.left); } if(node.right!=null){ queue.add(node.right); } } return result; } }