层次遍历,修改之前,队列中元素的个数就是每层的节点数。
从上往下打印二叉树
http://www.nowcoder.com/questionTerminal/7fe2212963db4790b57431d9ed259701
层次遍历,修改之前,队列中元素的个数就是每层的节点数。
层级变量,使用队列。需要提前保留队列中的元素个数,因为添加元素后,调用queue.size()的结果会变化
/** * 从上往下打印出二叉树的每个节点,同层节点从左至右打印。 * @param root 二叉树 * @return 打印结果 */ public ArrayList<Integer> PrintFromTopToBottom(TreeNode root) { LinkedList<TreeNode> queue=new LinkedList<>(); ArrayList<Integer> res=new ArrayList<>(); if(root==null){ return res; } queue.addLast(root); while (!queue.isEmpty()){ int size=queue.size(); for(int i=0;i<size;i++){ TreeNode cur=queue.removeFirst(); res.add(cur.val); if(cur.left!=null){ queue.addLast(cur.left); } if(cur.right!=null){ queue.addLast(cur.right); } } } return res; }