22.从上往下打印二叉树
从上往下打印出二叉树的每个节点,同层节点从左至右打印。
思路:二叉树的层次遍历
1.创建两个队列:一个存放节点(queue),一个存放值 ( list)。
2.先将根节点加入到队列中
3.遍历队列中的元素,遍历过程中,访问该元素的左右节点,再将左右子节点加入到队列中来
public class Solution {
public ArrayList<Integer> PrintFromTopToBottom(TreeNode root) {
//创建两个队列
ArrayList<Integer> list=new ArrayList<>();
ArrayList<TreeNode> queue=new ArrayList<>();
if(root==null){
return list;
}
//将根节点加入到队列中
queue.add(root);
//遍历队列中的元素
while(queue.size()!=0){
//remove(0)删除queue的第一个元素并将其返回,模拟了队列的弹出操作。
TreeNode temp=queue.remove(0);
//访问该元素的左右节点
if(temp.left!=null){
queue.add(temp.left);
}
if(temp.right!=null){
queue.add(temp.right);
}
list.add(temp.val);
}
return list;
}
}