从上到下打印出二叉树的每个节点,同一层的节点按照从左到右的顺序打印。
例如:
给定二叉树: [3,9,20,null,null,15,7],
3 / \ 9 20 / \ 15 7
返回:
[3,9,20,15,7]
思路:
使用层序遍历(BFS),可以得到一个二叉树的按层遍历的结果。
这里 BFS使用到了 Queue,LinkedList集合。
queue的用法,queue.pull() 返回队首,删除第一个。
new int[0]返回空数组
class Solution {
public int[] levelOrder(TreeNode root) {
//层序遍历,使用BFS实现。
if(root==null)
//new int[0] 的意思就是返回一个空数组
return new int[0];
//队列使用 linklist 来new
//Queue 使用LinkedList进行创建。
//ArrayList使用 ArrayList进行创建。
//记住,Queue的用法,poll 返回队首
Queue<TreeNode> queue=new LinkedList<>();
ArrayList<Integer> list=new ArrayList<>();
queue.add(root);
while(!queue.isEmpty()){
TreeNode node=queue.poll();
list.add(node.val);
if(node.left!=null)
queue.add(node.left);
if(node.right!=null)
queue.add(node.right);
}
int []res=new int[list.size()];
for(int i=0;i<list.size();i++)
res[i]=list.get(i);
return res;
}
}