面试题32 - I. 从上到下打印二叉树
从上到下打印出二叉树的每个节点,同一层的节点按照从左到右的顺序打印。
例如:
给定二叉树: [3,9,20,null,null,15,7],
3
/ \
9 20
/ \
15 7
返回:
[3,9,20,15,7]
提示:
节点总数 <= 1000
思路:
利用队列先进先出的特点,首先把根节点加入栈,把根节点的值保存,之后判断左右节点,不为空就加入栈,到栈空为止
相关知识点:
①Queue.poll() : 移除队列头的元素并且返回,如果队列为空则返回null
class Solution {
public int[] levelOrder(TreeNode root) {
if(root==null) return new int[0];
Queue<TreeNode> queue=new LinkedList<>(){{add(root);}};
ArrayList<Integer> list=new ArrayList<>();
while(!queue.isEmpty()){
TreeNode a=queue.poll();
list.add(a.val);
if(a.left!=null) queue.add(a.left);
if(a.right!=null) queue.add(a.right);
}
int[] a=new int[list.size()];
for(int i=0;i<list.size();i++){
a[i]=list.get(i);
}
return a;
}
}