二叉树的层序遍历
算法-二叉树的层序遍历
背景
-
算法–二叉树的层序遍历
-
博主以代码随想录算法公开课进行学习
题目
-
给你二叉树的根节点
root,返回其节点值的 层序遍历 。 (即逐层地,从左到右访问所有节点)。示例 1:
1
2输入:root = [3,9,20,null,null,15,7]
输出:[[3],[9,20],[15,7]]示例 2:
1
2输入:root = [1]
输出:[[1]]示例 3:
1
2输入:root = []
输出:[]提示:
- 树中节点数目在范围
[0, 2000]内 -1000 <= Node.val <= 1000
- 树中节点数目在范围
思路
- 二叉树的层序遍历(也叫广度优先遍历 BFS)的核心是按层访问,需要借助队列这个数据结构来实现:
- 初始化队列,将根节点入队;
- 循环处理队列:每次取出当前队列中所有节点(即当前层的所有节点),记录它们的值;
- 同时将当前层每个节点的左、右子节点(非空)依次入队,作为下一层的待处理节点;
- 重复上述步骤直到队列为空,最终得到按层划分的节点值列表。
代码实现
1 | /** |
总结
- 二叉树层序遍历的核心是队列 + 分层处理:用队列缓存节点,通过记录每层节点数实现分层;
- 关键步骤:根节点入队 → 遍历当前层所有节点(记录值 + 子节点入队) → 保存当前层结果 → 重复至队列为空;
- 空树判断是必要的边界处理,避免程序异常。