二叉树的层序遍历
程序员文章站
2024-03-19 21:14:22
...
class Solution {
public List<List<Integer>> levelOrder(TreeNode root){
List<List<Integer>> ret=new ArrayList<>();
if(null==root){
return ret;
}
Queue<TreeNode> q=new LinkedList<>();
q.offer(root);
while(!q.isEmpty()){
int size=q.size();
List<Integer> level=new ArrayList<>(size);//队列中保存的就是一层的节点,一次性将该层的节点全部遍历完
for(int i=0;i<size;++i){
TreeNode cur=q.poll();
level.add(cur.val);
//如果有左孩子,左孩子入队列
if(null!=cur.left){
q.offer(cur.left);
}
//如果有右孩子,右孩子入队列
if(null!=cur.right){
q.offer(cur.right);
}
}
ret.add(level);
}
return ret;
}
}