二叉树的层序遍历-力扣102
目录
二叉树的层序遍历 力扣102
一、题目
二、思路
层序遍历是一种经典的二叉树遍历方法,通常使用队列来实现。具体步骤如下:
将根节点加入队列。
开始循环处理:
从队列中取出一个节点进行访问。
如果该节点有左子节点,则将左子节点入队。
如果该节点有右子节点,则将右子节点入队。
重复上述过程直到队列为空。
这样可以确保每一层的节点按顺序被访问,并且其子节点依次加入队列等待后续处理。
三、代码
class Solution {
public List<List<Integer>> levelOrder(TreeNode root) {
//1.定义集合存放层序遍历的结果
List<List<Integer>> resList = new ArrayList<List<Integer>>();
if (root == null){
return resList;
}
//2.创建队列
Queue<TreeNode> que = new LinkedList<TreeNode>();
que.offer(root);
while (!que.isEmpty()) {
List<Integer> itemList = new ArrayList<Integer>();
int len = que.size();
//这里是核心逻辑,这里的len其实是每一层的节点个数,一开始只有一个节点。
//第一次循环只执行一次,将根节点的左右孩子加入到队列中时,此时len就会更新成孩子个数
//所以,当len为0时,说明当前层遍历完了,此时再执行一次循环,就会遍历下一层的节点
while (len > 0) {
TreeNode tmpNode = que.poll();
itemList.add(tmpNode.val);
if (tmpNode.left != null) que.offer(tmpNode.left); //左孩子入队
if (tmpNode.right != null) que.offer(tmpNode.right); //右孩子入队
len--;
}
resList.add(itemList); //处理完一层,将这一层的结果加入到resList中
}
return resList;
}
}