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;
}
}