题目描述:
从上往下打印出二叉树的每个节点,同层节点从左至右打印
思路:从根节点开始打印,从上到下打印二叉树,利用队列先进先出(FIFO)的性质
Java代码实现:
import java.util.ArrayList;
import java.util.LinkedList;
public class Solution {
public ArrayList<Integer> PrintFromTopToBottom(TreeNode root) {
ArrayList<Integer> list = new ArrayList<>();//声明一个列表来存放打印节点
if(root == null){
return list;
}
LinkedList<TreeNode> queue = new LinkedList<>();//声明一个队列来存放树的节点
queue.add(root);//压入根节点到队列中
while(!queue.isEmpty()){
TreeNode node = queue.poll();//将节点压入队列
list.add(node.val);//将之前放入队列的节点弹出打印至列表,在打印节点的同时将节点的左右子节点入队列
if(node.left != null){//节点的左节点不为空时,将其放在队列的尾部
queue.addLast(node.left);
}
if(node.right != null){//节点的有节点不为空时,将其放在队列的尾部
queue.addLast(node.right);
}
}
return list;//返回列表
}
}