题解 | #从上往下打印二叉树#
从上往下打印二叉树
https://www.nowcoder.com/practice/7fe2212963db4790b57431d9ed259701
方法一:借助队列层序遍历二叉树
public ArrayList<Integer> PrintFromTopToBottom(TreeNode root) {
ArrayList<Integer> arr = new ArrayList<>();//写在最前面检验null
if(root==null)return arr;//返回空数组,不能null(会报错)
Queue<TreeNode> queue = new LinkedList<>();
queue.offer(root);
arr.add(root.val);
while(!queue.isEmpty()){
int n = queue.size();
//加一个for循环其实就是分行遍历了,题目要求不分行
//那么就直接遍历queue里面每一个元素就行
for(int i=0;i<n;i++){
TreeNode node = queue.poll();
if(node.left!=null){
queue.offer(node.left);
arr.add(node.left.val);
}
if(node.right!=null){
queue.offer(node.right);
arr.add(node.right.val);
}
}
}
return arr;
}
