二叉树遍历

二叉树的三种深度遍历——前序 / 中序 / 后序——只有一个区别:什么时候访问当前节点

顺序访问时机这棵 BST 上的结果
前序 (pre)先访问自己,再递归左、右子树5, 3, 1, 4, 8, 7, 9
中序 (in)递归左子树 → 访问自己 → 递归右子树1, 3, 4, 5, 7, 8, 9
后序 (post)递归左、右子树 → 最后访问自己1, 4, 3, 7, 9, 8, 5

中序遍历 BST 得到升序序列——这不是巧合,是 BST 性质(左 < 根 < 右)和中序”左根右”顺序的直接产物。

工作方式

三种遍历共用一份递归代码,唯一变化是把 visit(node) 放在递归调用的哪一侧(左前、左右之间、还是右后)。看动画里的代码块——切换顺序时只是高亮的行换了位置。

复杂度

  • 时间:O(n)(每个节点恰好访问一次)
  • 空间:O(h),其中 h 是树高(递归栈深度)

在动画里看什么

  • 深蓝节点 = 当前正在 visit 的节点(脉冲光晕)
  • 浅蓝节点 + 加粗边框 = 当前在调用栈上(从根到当前激活的递归调用的整条路径)
  • 冷→暖渐变 = 已访问节点,颜色深浅反映访问顺序
  • 上方按钮切换三种顺序——同一棵树,看清楚区别
  • 下方的访问顺序列表实时累积