
leetcode题解102-二叉树的层序遍历
初始化队列:将二叉树的根节点加入队列。 处理每一层:在每次循环中,处理队列中的所有节点,这些节点构成了当前层的所有节点,按顺序记录它们的值。 处理子节点:对于每个节点,如果它有左子节点或右子节点,将这些子节点加入队列,以便在下一层次处理。 结果记录:每次处理完一层节点后,将这一层的节点值记录到结果列表中。 初始化结果列表和队列:检查根节点是否为空,并将根节点加入队列。 循环处理每层节点:在每次循环中,获取当前层次的节点数量,按照层次处理每个节点。 记录当前层节点值:将当前层节点的值记录到结果列表中。 处理子节点:将每个节点的左子节点和右子节点加入队列,以便处理下一层次的节点。
发布日期:2025-04-05 04:45:29
浏览次数:8
分类:精选文章
本文共 1287 字,大约阅读时间需要 4 分钟。
为了解决这个问题,我们需要对给定的二叉树进行层次遍历,并将结果按层顺序返回。层次遍历是指从根节点开始,从左到右逐层访问每个节点。我们可以使用队列来实现层次遍历,具体步骤如下:
方法思路
这种方法利用队列来保持当前层次的节点状态,并在每次循环中处理所有当前层次的节点,逐层记录节点值,从而实现了层次遍历。
解决码
import java.util.ArrayList;import java.util.LinkedList;import java.util.List;import java.util.Queue;class Solution { public List
> levelOrder(TreeNode root) { List
> result = new ArrayList<>(); if (root == null) { return result; } Queue queue = new LinkedList<>(); queue.add(root); while (!queue.isEmpty()) { int levelSize = queue.size(); List currentLevel = new ArrayList<>(); for (int i = 0; i < levelSize; i++) { TreeNode node = queue.poll(); currentLevel.add(node.value); if (node.left != null) { queue.add(node.left); } if (node.right != null) { queue.add(node.right); } } result.add(currentLevel); } return result; }}
代码解释
这种方法通过逐层处理节点,利用队列来维护当前层次的节点状态,从而高效地完成了层次遍历任务。
发表评论
最新留言
很好
[***.229.124.182]2025年04月15日 23时39分01秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
leetcode题解34-在排序数组中查找元素的第一个和最后一个位置
2025-04-05
leetcode题解347-前 K 个高频元素
2025-04-05
leetcode题解4-寻找两个正序数组的中位数
2025-04-05
leetcode题解41-缺失的第一个正数原来如此简单
2025-04-05
leetcode题解434-字符串中的单词数(双指针经典)
2025-04-05
leetcode题解46-全排列
2025-04-05
leetcode题解48-旋转图像
2025-04-05
leetcode题解5-最长回文子串
2025-04-05
leetcode题解50-Pow(x,n)
2025-04-05
leetcode题解53-最大子序和
2025-04-05
leetcode题解538-把二叉搜索树转化为累加树
2025-04-05
leetcode题解54-螺旋矩阵
2025-04-05
leetcode题解56-合并区间
2025-04-05
leetcode题解62-不同路径
2025-04-05
leetcode题解66-加一
2025-04-05
leetcode题解70-爬楼梯
2025-04-05
leetcode题解72-编辑距离
2025-04-05
leetcode题解75-颜色分类
2025-04-05
leetcode题解767-重构字符串
2025-04-05
leetcode题解77-子集
2025-04-05