博客
关于我
leetcode题解102-二叉树的层序遍历
阅读量:793 次
发布时间:2023-01-31

本文共 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; }}

    代码解释

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

    转载地址:http://khgyk.baihongyu.com/

    你可能感兴趣的文章
    leetcode题解72-编辑距离
    查看>>
    leetcode题解75-颜色分类
    查看>>
    leetcode题解767-重构字符串
    查看>>
    leetcode题解77-子集
    查看>>
    leetcode题解77-组合
    查看>>
    leetcode题解776-旋转字符串
    查看>>
    leetcode题解8-盛最多水的容器
    查看>>
    leetcode题解976-三角形的最大周长
    查看>>
    leetcode题解98-验证二叉搜索树
    查看>>
    LeetCode题解【打家劫舍】(中等难度)
    查看>>
    Leetcode题解(二)
    查看>>
    left join on、where后面的条件的区别
    查看>>
    left join right inner join 区别
    查看>>
    leftjoin多个on条件_MySQL:left join 避坑指南
    查看>>
    legend2---开发日志3(thinkphp的入口目录是public的体现是什么)
    查看>>
    legoblock秀上限
    查看>>
    LeNet介绍-ChatGPT4o作答
    查看>>
    LeNet剪枝
    查看>>
    Length of Last Word
    查看>>
    Lenovo E47A Ubuntu闪屏解决办法
    查看>>