1 package com.algorithm; 2 3 import java.util.ArrayList; 4 import java.util.LinkedList; 5 import java.util.Queue; 6 7 //从上往下打印出二叉树的每个节点,同层节点从左至右打印。 8 /** 9 public class TreeNode { 10 int val = 0; 11 TreeNode left = null; 12 TreeNode right = null; 13 14 public TreeNode(int val) { 15 this.val = val; 16 } 17 } 18 */ 19 public class PrintBinaryTree { 20 //思路 ,队列 21 public ArrayList<Integer> PrintFromTopToBottom(TreeNode root) { 22 ArrayList<Integer> ls = new ArrayList<Integer>(); 23 if(root == null) 24 return ls; 25 Queue<TreeNode> queue = new LinkedList<TreeNode>(); 26 queue.offer(root);//入队 27 while(!queue.isEmpty()){ 28 TreeNode tn = queue.poll();//出对 29 ls.add(tn.val);//保存值 30 if(tn.left != null) 31 queue.offer(tn.left);//入队 32 if(tn.right != null) 33 queue.offer(tn.right);//出对 34 } 35 return ls; 36 } 37 }