import java.util.ArrayList;
import java.util.LinkedList;
import java.util.Queue;
/**
* 从上到下打印二叉树
* 描述:从上往下打印二叉树的每个结点,从一层的结点按照从左到右的顺序打印。
* 方法:采用队列的方法(队列先进先出的性质)。首相将root放入队列,弹出一个时,同时将其左右孩子放入队列末端(在有孩子的情况下)
* 直到队列为空结束
* @author lenovo047
*
*/
public class test23 {
public ArrayList<Integer> PrintFromTopToBottom(TreeNode root) {
if(root == null)
return new ArrayList();//判题需要,若返回null,会报空指针
ArrayList<Integer> result = new ArrayList<>(); //将题目要求的打印操作,放入result,取代了打印
Queue<TreeNode> queue = new LinkedList<>(); //此题的关键之处
queue.offer(root); //放入队列
while (!queue.isEmpty()){
TreeNode currentNode = queue.poll(); //弹出
result.add(currentNode.val);
if(currentNode.left != null)
queue.offer(currentNode.left);
if(currentNode.right != null)
queue.offer(currentNode.right);
}
return result;
}
}