无需登录 数据私有 本地保存

二叉树遍历可视化 - 前序/中序/后序动画

20
0
0
0
遍历方式 | | 600ms
预设树
节点值:
清空输入框可隐藏该节点及其子树
遍历序列 --
点击遍历按钮开始动画
当前步骤: 0 / 0
常见问题与知识点

前序遍历(Preorder):先访问根节点,再递归访问左子树,最后递归访问右子树。顺序为根→左→右。常用于复制树结构、生成前缀表达式。

中序遍历(Inorder):先递归访问左子树,再访问根节点,最后递归访问右子树。顺序为左→根→右。对于二叉搜索树(BST),中序遍历可得到有序序列。

后序遍历(Postorder):先递归访问左子树,再递归访问右子树,最后访问根节点。顺序为左→右→根。常用于删除树(先删子节点再删父节点)、生成后缀表达式。

三种遍历方式(前序、中序、后序)的时间复杂度均为 O(n),其中 n 是二叉树的节点总数。因为每个节点恰好被访问一次。

空间复杂度:递归实现为 O(h),其中 h 是树的高度(递归调用栈深度)。最坏情况(树退化为链表)为 O(n),最好情况(平衡二叉树)为 O(log n)。迭代实现使用显式栈,空间复杂度相同。

仅凭单一遍历序列无法唯一确定二叉树结构,需要两种遍历序列的组合

  • 前序 + 中序:可唯一重建二叉树。前序第一个元素是根,在中序中找到根的位置,左边是左子树,右边是右子树,递归构建。
  • 后序 + 中序:可唯一重建。后序最后一个元素是根,在中序中定位根后递归构建。
  • 前序 + 后序不能唯一确定二叉树(对于非满二叉树),但可确定满二叉树的结构。

深度优先遍历(DFS)包括前序、中序、后序遍历,使用(递归或显式栈)实现,沿着树的深度方向探索。

层序遍历(BFS)按层级从上到下、每层从左到右访问节点,使用队列实现,沿着树的宽度方向探索。

DFS更适合查找特定路径、树的序列化/反序列化;BFS更适合查找最短路径、按层级处理节点(如打印树形结构)。本工具专注于三种DFS遍历的可视化。

表达式树是一种特殊的二叉树,叶子节点存储操作数(数字/变量),内部节点存储运算符。

  • 前序遍历前缀表达式(波兰表示法):+ * 3 5 - 8 2,运算符在操作数前面。
  • 中序遍历中缀表达式3 * 5 + 8 - 2(可能需要加括号保证优先级)。
  • 后序遍历后缀表达式(逆波兰表示法):3 5 * 8 2 - +,运算符在操作数后面,计算机更容易计算。

试试本工具的"表达式树"预设来直观理解!

  • 文件系统遍历:目录结构是天然的树,前序遍历可用于复制目录(先创建父目录再复制子文件)。
  • 编译器设计:语法树(AST)的遍历用于代码生成、优化。后序遍历常用于表达式求值。
  • 数据库索引:B+树的中序遍历可获取有序数据序列。
  • 游戏AI:行为树、决策树使用遍历来评估条件和执行动作。
  • DOM操作:HTML DOM树的遍历用于查找、操作页面元素。
  • 序列化/反序列化:前序遍历常用于将树结构保存为文件或传输格式(如JSON)。