Skip to content

树与森林 ↔ 二叉树的转换

转换的本质

树、森林和二叉树之间可以互相转换——所有树形结构都可以用二叉树来表示和存储。408 考研中,这类转换是画图题的常客,选择题和综合应用题均常出现。

核心思想

转换的理论基础是孩子兄弟表示法(又称二叉链表表示法):

  • 左指针指向该结点的第一个孩子
  • 右指针指向该结点的下一个右兄弟
孩子兄弟表示法结点结构:
┌──────────┬──────┬──────────────┐
│ firstChild│ data │ nextSibling  │
└──────────┴──────┴──────────────┘
     ↓                    ↓
  第一个孩子          下一个右兄弟

这样,任意一棵树都可以用一棵二叉树来唯一表示,左孩子 = 第一个孩子,右孩子 = 下一个兄弟。

树与森林转换流程图

交互可视化

通过下方的交互动画,你可以逐步观察树与森林 ↔ 二叉树的转换的执行过程:

加载可视化中...

操作详解

树转二叉树

将一棵普通树转换为二叉树,口诀:"兄弟相连留长子"

关键步骤:

  1. 在所有相邻兄弟结点之间加一条连线
  2. 对每个结点,只保留它与第一个孩子的连线,删除与其他孩子的连线
  3. 以根结点为轴心,将整棵树顺时针旋转 45° 调整形态

转换特点:

  • 树的根结点转换后没有右子树(因为根没有兄弟)
  • 转换是唯一的,即一棵树对应唯一一棵二叉树

森林转二叉树

森林是 m 棵互不相交的树的集合。转换方法:

关键步骤:

  1. 将森林中每棵树各自转换为二叉树
  2. 将第二棵二叉树作为第一棵二叉树根结点的右子树
  3. 将第三棵二叉树作为第二棵二叉树根结点的右子树
  4. 依此类推,所有树的根结点通过右指针相连

等价理解:把森林中各棵树的根看作兄弟关系,然后整体按"孩子兄弟表示法"处理即可。

二叉树还原

二叉树转树

关键步骤:

  1. 若某结点 p 是其双亲的左孩子,则将 p 的右孩子、右孩子的右孩子……都与 p 的双亲用线连接
  2. 删除原二叉树中所有结点与其右孩子的连线
  3. 调整层次,使之成为一棵树

二叉树转森林

判断依据:若二叉树的根结点有右子树,则可转为森林;否则只能转为一棵树。

关键步骤:

  1. 从根结点开始,沿右指针断开,得到若干棵二叉树(根、根的右子树、根的右子树的右子树……)
  2. 将每棵二叉树分别转换为树
  3. 所有树构成森林

遍历对应关系

树、森林与二叉树的遍历之间存在严格的对应关系,这是 408 考研的核心考点。

树的遍历对应

树的遍历对应的二叉树遍历说明
先根遍历先序遍历根→第一个孩子对应根→左子树
后根遍历中序遍历最后访问根对应中序访问根

森林的遍历对应

森林的遍历对应的二叉树遍历说明
先序遍历先序遍历依次先根遍历每棵树
中序遍历中序遍历依次后根遍历每棵树

注意:森林没有"后序遍历"的说法,森林的中序遍历也称为森林的后根遍历。

复杂度分析

操作时间复杂度说明
树转二叉树O(n)每个结点处理一次
森林转二叉树O(n)n 为森林中所有结点总数
二叉树转树O(n)每个结点处理一次
二叉树转森林O(n)每个结点处理一次

空间复杂度:O(1),转换过程仅修改指针,不需要额外存储空间(递归实现时栈空间为 O(h),h 为树高)。

考研高频考点

  • ⭐ 树的先根遍历 = 二叉树的先序遍历,树的后根遍历 = 二叉树的中序遍历(选择题高频)
  • ⭐ 森林的先序遍历 = 二叉树的先序遍历,森林的中序遍历 = 二叉树的中序遍历(选择题高频)
  • ⭐ 给定树/森林画出对应的二叉树,或由二叉树还原树/森林(应用题必考)
  • ⭐ 判断二叉树能还原为树还是森林(根结点是否有右子树)
  • 孩子兄弟表示法的结点结构及含义(概念题)
  • 含 n 个结点的森林转二叉树后,二叉树中空指针域的个数分析(偶尔考)

易错:树转二叉树的规则是"左孩子右兄弟":结点的第一个孩子变为左孩子,右边的兄弟变为右孩子。转换后的二叉树根结点一定没有右子树(因为根没有兄弟)。

易错:森林转二叉树时,先将每棵树单独转为二叉树,然后把第二棵树作为第一棵树根的右子树,第三棵树作为第二棵树根的右子树...依次串联。所以森林转二叉树后根结点右子树。

相关知识

  • 先序遍历:树的先根遍历 = 对应二叉树的先序遍历
  • 中序遍历:树的后根遍历 = 对应二叉树的中序遍历
  • 层序遍历:森林转二叉树后,层序遍历关系不再直接对应

真题练习

相关真题(9题)

2026Q4选择题2分

森林转二叉树:树的次序影响二叉树高度,求最小高度为 6

2025Q4选择题2分

树的性质判断:完全二叉树度为 1 的节点、森林转二叉树、分支节点与叶节点数关系

树与森林树(综合)
2021Q4选择题2分

森林与二叉树转换:森林转二叉树后的结构性质

2020Q4选择题2分

森林遍历转换:先序和中序遍历构造二叉树后求后序序列

2019Q2选择题2分

树与二叉树转换:一般树的后根遍历对应转换后二叉树的中序遍历

2016Q5选择题2分

森林性质:结点数与边数的关系推算树的棵数

树与森林树(综合)
2014Q5选择题2分

森林转二叉树:森林叶结点数等于转换后二叉树左孩子指针为空的结点数

2011Q6选择题2分

树与二叉树转换:左孩子右兄弟表示法的转换规则

2009Q6选择题2分

森林转二叉树:左孩子右兄弟规则下的可能关系