博客
关于我
[LeetCode][Java] Binary Tree Level Order Traversal
阅读量:797 次
发布时间:2023-03-28

本文共 1310 字,大约阅读时间需要 4 分钟。

为了解决这个问题,我们需要对二叉树进行层次遍历(也称为广度优先搜索),按层次从左到右收集节点的值。

方法思路

我们可以使用队列来实现层次遍历。队列的作用是记录当前需要处理的节点,每次从队列中取出一个节点并处理其左孩子和右孩子,直到队列为空为止。具体步骤如下:

  • 检查根节点:如果根节点为空,直接返回空列表。
  • 初始化队列:将根节点加入队列。
  • 初始化结果列表:用来存储每一层的节点值。
  • 处理队列:每次取出队列中的节点,记录其值,并将其左孩子和右孩子(如果不为空)加入队列。处理完当前层所有节点后,将该层的值加入结果列表。
  • 返回结果:当队列为空时,返回结果列表。
  • 解决代码

    import java.util.ArrayList;import java.util.LinkedList;import java.util.List;import java.util.Queue;public class Solution {    private static TreeNode root;    public static List
    > levelOrder(TreeNode root) { List
    > res = new ArrayList<>(); if (root == null) { return res; } Queue
    queue = new LinkedList<>(); queue.offer(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.val); if (node.left != null) { queue.offer(node.left); } if (node.right != null) { queue.offer(node.right); } } res.add(currentLevel); } return res; }}

    代码解释

  • 检查根节点:如果根节点为空,直接返回空列表。
  • 初始化队列:使用LinkedList作为队列,方便快速插入和删除操作。
  • 循环处理队列:每次循环处理当前队列中的所有节点,记录其值,并将左、右孩子加入队列。
  • 记录层次结果:每次处理完一层节点后,将该层的值加入结果列表。
  • 返回结果:当队列为空时,返回所有层次的节点值列表。
  • 这种方法确保了每个节点按层次从左到右处理,并且高效地使用了队列结构,实现了广度优先搜索。

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

    你可能感兴趣的文章
    Objective-C实现数组去重(附完整源码)
    查看>>
    Objective-C实现数组的循环左移(附完整源码)
    查看>>
    Objective-C实现数除以二divideByTwo算法(附完整源码)
    查看>>
    Objective-C实现文件分割(附完整源码)
    查看>>
    Objective-C实现文件拷贝(附完整源码)
    查看>>
    Objective-C实现文件断点传输(附完整源码)
    查看>>
    Objective-C实现文件的删除、复制与重命名操作实例(附完整源码)
    查看>>
    Objective-C实现无序表查找算法(附完整源码)
    查看>>
    Objective-C实现无锁链表(附完整源码)
    查看>>
    Objective-C实现无锁链表(附完整源码)
    查看>>
    Objective-C实现时间戳转为年月日时分秒(附完整源码)
    查看>>
    Objective-C实现是否为 Pythagoreantriplet 毕氏三元数组算法(附完整源码)
    查看>>
    Objective-C实现显示响应算法(附完整源码)
    查看>>
    Objective-C实现晚捆绑测试实例(附完整源码)
    查看>>
    Objective-C实现普通矩阵A和B的乘积(附完整源码)
    查看>>
    Objective-C实现更新数字指定偏移量上的值updateBit算法(附完整源码)
    查看>>
    Objective-C实现最优二叉搜索树算法(附完整源码)
    查看>>
    Objective-C实现最大和连续子序列算法(附完整源码)
    查看>>
    Objective-C实现最大的非常大的数字算法(附完整源码)
    查看>>
    Objective-C实现最大类间方差法OTSU算法(附完整源码)
    查看>>