二叉树与树的相互转化
树转化为二叉树
- 加线,在所有兄弟结点之间加线
- 去线,对树中每个结点只保留与它第一个孩子结点的连线,删除与其他孩子结点之间的连线
- 其中每个结点左指针指向她的第一个孩子结点,右指针指向他在树中的相邻兄弟结点,由于根节点没有兄弟,因此由树转换而得的二叉树没有右子树
由二叉树转化到树
- 加线,若该结点存在做孩子,则将该结点与该结点的n个有孩子结点相连(即只要这个结点有左子结点,则将这个结点与子结点的右孩子结点相连,与右孩子结点的右孩子结点相连…有多少连多少)
- 去线,去除所有结点与其右孩子结点连线
森林转化为二叉树
- 每一颗树先转化为二叉树
- 再将二叉树依次插入前一颗的右子树
二叉树转化为森林
- 对比着森林转化为二叉树
- 先将右子树一颗一颗拆下来
- 再逐个转化为树