LeetCode[102].二叉树的层序遍历

常规的遍历,只用结合队列就行,注意Java 队列的创建和使用
NoteJava队列的创建一般用
LinkedList比如Queue<TreeNode> q = new LinkedList<>();
add( )和offer( )用于添加元素到队列尾部,offer( )更安全,add( )在队列满时会抛异常
poll( )移除并返回队列的头部元素 相当于结合了 C++的front()和pop()
peek( )返回队列的头部元素,但不删除它
size( )返回队列中元素的个数isEmpty( )判断队列是否为空
contains(Object o)检查队列中是否包含某个特定元素
代码:
class Solution {
public List<List<Integer>> levelOrder(TreeNode root) {
List<List<Integer>> ans = new ArrayList<>();
if(root==null) return ans;
Queue<TreeNode> q = new LinkedList<>();
q.add(root);
while(!q.isEmpty()){
int size = q.size();
List<Integer> list = new ArrayList<>();
for(int i = 0;i<size;i++){
TreeNode node = q.poll();
list.add(node.val);
if(node.left!=null) q.add(node.left);
if(node.right!=null) q.add(node.right);
}
ans.add(list);
}
return ans;
}
}