My Little World

树、森林和二叉树的转换与遍历

树转化为二叉树


图片名称
图片名称

1.在树中所有的兄弟结点之间加一连线
2.对每个结点,除了保留与其长子的连线外,去掉该结点与其他孩子的连线
3.调整位置结构(顺时针旋转一定角度),变成只有左子树的二叉树

森林转化为二叉树


图片名称
图片名称

1.先将森林中的每颗树变为二叉树
2.再将各二叉树的根结点视为兄弟从左至右连在一起
3调整位置结构,形成拥有左右子树的二叉树

二叉树转化树、森林

1.若结点x是其双亲y的左孩子,则把x的右孩子,右孩子的右孩子,……,都与y用连线连起来
2.去掉所有双亲到右孩子之间的连线
注意:如二叉树有右孩子则将转化为森林,反之转化为普通树

树的遍历

tree3
1.先根遍历
先访问树的根结点,然后再依次先跟遍历每颗子树
ABEFCGDHIJ
2.后根遍历
先依次遍历每颗子树,然后再访问根结点
EFBGCHIJDA

森林遍历

1.前序遍历:按树的先根遍历
2.后续遍历:按树的后跟遍历

小结:
树、森林的前根遍历和二叉树前序遍历结果相同,
树、森林的后根遍历和二叉树的中序遍历相同,
因此对于树、森林的遍历可以转化为二叉树的遍历