普通树转二叉树

  • 在所有兄弟之间加一条线
  • 对数中每个结点,只保留与第一个孩子的结点连线,消去其他孩子连线
  • 将树的结构层次分明

森林转换二叉树

  • 现将森林中每颗树转换成二叉树
  • 再将各二叉树的根节点视为兄弟从左到右连在一起,就形成了大二叉树

二叉树转换到树,森林

  • 若结点 x 是双亲 y 的左孩子,则把 x 的右孩子,右孩子的右孩子,...,都消去原双亲连线并与 y 相连作为新的双亲连线
  • 整理每棵树,则可得到树/森林;

注:普通树转二叉树时,原来的子结点在这个结点的左子树,兄弟结点在右子树;转化后的根节点没有右子树,说明他原本是普通树,否者他原本是森林

树与森林的遍历

  树

    先根遍历:先访问树的根节点,然后再从左到右的先根遍历根的每颗子树

    后跟遍历:先从左到右后跟遍历每颗子树,然后再访问根节点

  森林

    前序、后序(按照树的先根和后跟遍历依次访问森林的每颗树)

结论:树、森林的先根遍历和二叉树的前序遍历结果相同;树、森林的后根遍历和二叉树的中序遍历结果相同;