面试知识库

102. 层序遍历#

从生活看遍历:层与层的对话#

想象一个社交派对。人们不是随机交谈,而是按楼层、按桌次有序互动。二叉树的层序遍历,正如这样一场有组织的社交盛宴,每一层都有自己独特的节奏和故事。

问题描述#

题目目标#

给你二叉树的根节点 root ,返回其节点值的层序遍历结果,即逐层地从左到右访问所有节点。

示例 1#

输入: root = [3,9,20,null,null,15,7] 输出: [[3],[9,20],[15,7]] 二叉树示意:

 3   
/    \
9   20
   /  \
  15  7
text

说明: 按层从左到右读取节点,结果就是 [[3],[9,20],[15,7]]。

补充说明#

  • 二叉树通常使用层序数组表示,null 表示该位置没有节点。

层序遍历的本质#

层序遍历(LeetCode第102题)的核心:

  • 自上而下,从根开始
  • 同一层的节点依次访问
  • 先进先出的队列管理

递归解法:有序的层次之旅#

迭代解法:队列的精确编排#

性能分析#

时间复杂度:O(n)#

  • 每个节点访问一次
  • 节点数量决定遍历时间

空间复杂度:O(w)#

  • w为树的最大宽度
  • 队列空间消耗
  • 最坏情况可能接近O(n/2)

思考与拓展#

  1. 为什么队列适合层序遍历?
  2. 如何处理特殊二叉树?
  3. 还有哪些遍历方式?

应用场景#

  • 网络拓扑分析
  • 组织结构层级展示
  • 状态机的层次遍历
  • 图形用户界面的渲染

遍历的启示#

层序遍历教会我们:

  • 有序胜于随机
  • 系统性思考的重要性
  • 复杂问题可以通过简单规则解决

记住,遍历树就像理解一个复杂系统,重要的是保持结构性思维!