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

    代码解释

  • 初始化结果列表和队列:检查根节点是否为空,并将根节点加入队列。
  • 循环处理每层节点:在每次循环中,获取当前层次的节点数量,按照层次处理每个节点。
  • 记录当前层节点值:将当前层节点的值记录到结果列表中。
  • 处理子节点:将每个节点的左子节点和右子节点加入队列,以便处理下一层次的节点。
  • 这种方法通过逐层处理节点,利用队列来维护当前层次的节点状态,从而高效地完成了层次遍历任务。

    上一篇:leetcode题解102-翻转二叉树
    下一篇:leetcode题解-买卖股票的最佳时机

    发表评论

    最新留言

    很好
    [***.229.124.182]2025年04月15日 23时39分01秒