IT评测·应用市场-qidao123.com
标题:
二叉树的层序遍历 力扣102
[打印本页]
作者:
用户云卷云舒
时间:
2025-3-13 23:06
标题:
二叉树的层序遍历 力扣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;
}
}
复制代码
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
欢迎光临 IT评测·应用市场-qidao123.com (https://dis.qidao123.com/)
Powered by Discuz! X3.4