二叉树层序遍历

二叉树层序遍历的实现与分析

在数据结构中,二叉树是一种非常重要的结构。层序遍历(也称为广度优先遍历)是一种遍历二叉树的方法,它按照层次逐层访问每个节点。本文将介绍如何实现二叉树的层序遍历,并提供相关的代码示例和分析。

层序遍历简介

层序遍历是广度优先搜索(BFS)的应用,通常使用队列来辅助实现。它从根节点开始,首先访问根节点,然后依次访问根节点的每一个子节点,接着访问每一个子节点的子节点,以此类推,直到所有节点都被访问。

实现代码

以下是层序遍历的 Java 实现代码:

import java.util.*;

public class BinaryTreeLevelOrder {
    public List<List<Integer>> levelOrder(TreeNode root) {
        List<List<Integer>> res = new ArrayList<>();
        Queue<TreeNode> queue = new ArrayDeque<>();
        
        if (root != null) {
            queue.add(root);
        }
        
        while (!queue.isEmpty()) {
            int n = queue.size();
            List<Integer> level = new ArrayList<>();
            
            for (int i = 0; i < n; i++) {
                TreeNode node = queue.poll();
                level.add(node.val);
                
                if (node.left != null) {
                    queue.add(node.left);
                }
                if (node.right != null) {
                    queue.add(node.right);
                }
            }
            
            res.add(level);
        }
        
        return res;
    }
}

代码解析

初始化:

  • res 用于存储每一层的节点值。
  • queue 用于存储当前层的节点,辅助进行广度优先遍历。

处理根节点:

  • 若根节点不为空,将其加入队列。

遍历过程:

  • 当队列不为空时,处理当前层的所有节点。
  • 记录当前层节点的数量 n,并创建一个 level 列表来存储当前层的节点值。
  • 遍历当前层的所有节点,将每个节点的值添加到 level 列表中,并将其子节点加入队列。
  • level 列表添加到 res 中。

返回结果:

  • 当队列为空时,返回 res,其中包含了所有层次的节点值。

相关例题

102.二叉树的层序遍历
107.二叉树的层次遍历II
199.二叉树的右视图
429.N叉树的层序遍历
515.在每个树行中找最大值
637.二叉树的层平均值

总结

层序遍历是一种简单而有效的遍历二叉树的方法,适用于需要逐层处理节点的情况。通过使用队列,我们可以轻松实现这一遍历方式,并确保每层的节点都被按顺序访问。

希望本文对你理解和实现二叉树的层序遍历有所帮助。

posted @ 2024-09-11 16:14  Abufan  阅读(103)  评论(0)    收藏  举报