二叉树与树的相互转化

二叉树与树的相互转化

树转化为二叉树

  • 加线,在所有兄弟结点之间加线

二叉树与树的相互转化_第1张图片

  • 去线,对树中每个结点只保留与它第一个孩子结点的连线,删除与其他孩子结点之间的连线
  • 其中每个结点左指针指向她的第一个孩子结点,右指针指向他在树中的相邻兄弟结点,由于根节点没有兄弟,因此由树转换而得的二叉树没有右子树
    二叉树与树的相互转化_第2张图片

由二叉树转化到树

  • 加线,若该结点存在做孩子,则将该结点与该结点的n个有孩子结点相连(即只要这个结点有左子结点,则将这个结点与子结点的右孩子结点相连,与右孩子结点的右孩子结点相连…有多少连多少)
    二叉树与树的相互转化_第3张图片
  • 去线,去除所有结点与其右孩子结点连线
    二叉树与树的相互转化_第4张图片

森林转化为二叉树

  • 每一颗树先转化为二叉树
  • 再将二叉树依次插入前一颗的右子树

二叉树转化为森林

  • 对比着森林转化为二叉树
  • 先将右子树一颗一颗拆下来
  • 再逐个转化为树

你可能感兴趣的:(数据结构,二叉树和树的转化,二叉树)