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

二叉树遍历 · 单步演示

中序遍历

先中序遍历左子树,再访问根,最后中序遍历右子树。对二叉搜索树做中序遍历,得到的正好是从小到大的序列。

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

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

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

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

伪代码 · 当前行高亮

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

变量

node
递归深度0
已输出[]

复杂度

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

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

要点

  • 默认输入是一棵二叉搜索树,中序结果是递增的,可以用来检查一棵树是不是二叉搜索树。
  • 在中序序列里,根把序列分成左子树和右子树两段。

常见错误

把「访问」写在两个递归调用之前或之后,就变成了前序或后序——三种遍历的区别只在这一行的位置。

同一类的其他演示