题目描述
从上往下打印出二叉树的每个节点,同层节点从左至右打印。
由于本题要求所有结点都按序存放在一个集合中,而不是每层结点分开放,因此无法使用递归来做。
可以通过队列,并且本题用队列做也无需记录当前遍历层结点数以及下一层结点数。
import java.util.ArrayList;
import java.util.ArrayDeque;
public class Solution {
public ArrayList<Integer> PrintFromTopToBottom(TreeNode root) {
ArrayList<Integer> res=new ArrayList<>();
ArrayDeque<TreeNode> ad=new ArrayDeque<>();
if(root==null)return res;
ad.add(root);
while(!ad.isEmpty()){
TreeNode temp=ad.pollFirst();
res.add(temp.val);
if(temp.left!=null){
ad.add(temp.left);
}
if(temp.right!=null){
ad.add(temp.right);
}
}
return res;
}
}
}```