题目描述 从上往下打印出二叉树的每个节点,同层节点从左至右打印。
由于本题要求所有结点都按序存放在一个集合中,而不是每层结点分开放,因此无法使用递归来做。 可以通过队列,并且本题用队列做也无需记录当前遍历层结点数以及下一层结点数。
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; } } }```