数据结构与算法演示台SUANFA.NET.CN · STEP BY STEP

二叉树遍历 · 单步演示

后序遍历

先后序遍历左子树,再后序遍历右子树,最后访问根。一个结点总是在它所有子孙都处理完之后才被访问。

从上到下、从左到右写结点,空位写 #,空位下面不再写孩子;最多 20 个结点、6 层。 输入只在你的浏览器里计算,不会上传。

831016144713
调用栈(底 → 顶)(空)
后序序列(空)

步 001 / 057后序遍历:先左子树,再右子树,最后访问根。

键盘: 单步,空格 播放/暂停(先点一下演示区)。

伪代码 · 当前行高亮

  1. 遍历(node):
  2. if node 为空:return
  3. 遍历(node.left)
  4. 遍历(node.right)
  5. 访问 node

变量

node
递归深度0
已输出[]

复杂度

最好情况O(n)
平均情况O(n)
最坏情况O(n)
额外空间O(h)

每个结点访问一次;调用栈深度等于树高 h。

要点

  • 释放一棵树的内存、计算每棵子树的大小或高度,都要先处理孩子,用后序。
  • 后序序列的最后一个元素一定是根。

常见错误

用非递归写后序比前序、中序都麻烦:需要记住右子树是否已经处理过,否则会重复进入。

同一类的其他演示