树转化为二叉树
树一般是无序的,而二叉树是有序的,因此将树中的每一个结点的孩子结点从左到右依次编号。
将一棵树转化为二叉树的方法如下:
- 树中所有相邻兄弟结点连线。
- 对于树中的每一个节点,只保留它与自己第一个孩子结点之间的连线,删去它与其他孩子结点之间的连线。
树做这种转化所构成的二叉树是唯一的。
在树所转化成的二叉树中,左分支的各结点在原来的树中是父子关系,右分支的各结点在原来的树中是兄弟关系。由于根节点没有兄弟,所以转化后的二叉树的根必定没有右结点。
森林转化为二叉树
森林是若干棵树的集合,森林转化为二叉树的方法如下:
- 依次将森林中的树转化为二叉树。
- 从第二棵二叉树开始,依次把当前二叉树作为前一棵二叉树的根节点的右子树连接。
示意图如下:
二叉树转化为森林
树转化成的二叉树,根结点没有右子树,因此是不可逆的。而森林转化成的二叉树,根结点有右子树,显然该过程是可逆的。
具体方法如下:
- 若一个结点是其双亲的右孩子,则把从该结点沿右分支所找到的所有结点和它的双亲连接起来。
- 删除二叉树中所有结点与其右子树的连线。
示意图如下: