将一棵树转换成二叉树的过程如下:
(1)树中所有相邻兄弟之间加一条连线。
(2)对树中的每个结点只保留它与长子(即最左边的孩子结点)之间的连线,删除与其他孩子之间的连线。
(3)以树的根结点为轴心,将整棵树顺时针转动45°,使之结构层次分明。
例如:将下面的树转换成二叉树。
从中可以看到,一棵树T转换成二叉树BT后,BT中的左分支仍表示T中的孩子关系,但BT中的右分支却表示T中的兄弟关系。由于T的根结点没有兄弟,所以BT的根结点一定没有右孩子结点。
若要转换为二叉树的森林由两棵或两以上的树构成,将这样的森林转换为二叉树的过程如下:
(1)将森林中的每棵树转换成相应的二叉树。
(2)第一棵二叉树不动,从第二棵二叉树开始,依次把后一棵二叉树的根结点作为前一棵二叉树的根结点的右孩子结点,当所有二叉树连在一起后,此时得到的二叉树就是由森林转换得到的二叉树。
实际上,当森林F由两棵或两棵以上的树{,
,
,……,
}构成时,所有这些树的根结点构成兄弟关系,所以森林F转换成一棵二叉树BT后,将第一棵树
的根结点作为BT的根结点
,
的根结点作为
的右孩子结点
,
的根结点作为
的右孩子结点
,以此类推。
例如:将下面的森林转换成二叉树。
例:将下面的二叉树转换成树或森林。