二叉树层序遍历
二叉树层序遍历的实现与分析
在数据结构中,二叉树是一种非常重要的结构。层序遍历(也称为广度优先遍历)是一种遍历二叉树的方法,它按照层次逐层访问每个节点。本文将介绍如何实现二叉树的层序遍历,并提供相关的代码示例和分析。
层序遍历简介
层序遍历是广度优先搜索(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.二叉树的层平均值
总结
层序遍历是一种简单而有效的遍历二叉树的方法,适用于需要逐层处理节点的情况。通过使用队列,我们可以轻松实现这一遍历方式,并确保每层的节点都被按顺序访问。
希望本文对你理解和实现二叉树的层序遍历有所帮助。