一般来说,直接对一般树做一些相关操作非常对不方便。因此,将一般树转换为二叉树,操作完成后逆转为一般树成为了大部分人对付一般树的方法。
一般树转换二叉树:
1)将每一个结点与他的兄弟结点之间连一条线。
2)对每一个双亲结点,只保留它与第一个子结点的连线,删除与其余结点的连线。
3)整理,左右摆齐。
a a a a
/ | \ / | \ / /
b c d b...c...d b..c..d b
/ / \ -> / / \ -> / / -> / \
e f g e f....g e f..g e c
| | | / \
h h h f d
/ \
h g
二叉树转换一般树(相反):
1)若一个结点是其父结点的左结点,则将此结点的右结点,右结点的右结点。。。都与其父结点相连线。
2)删除原二叉树所有父结点与右结点的连线。
图示:
3)整理连线,统一高度。