森林与树的转换
是m(m>=0)棵互不相交的树的集合
森林转换成二叉树
- 将每棵树分别转换成二叉树
- 将每棵树的根结点用线连起来
- 以第一课树根结点为二叉树的根,再以根结点为轴心,顺时针旋转,构成二叉树
二叉树转换成森林
- 抹线:将二叉树中根结点与其右孩子连线,及沿右分支搜索到的所有右孩子间连线全部抹掉,使之变成孤立的二叉树
- 还原:将孤立的二叉树还原成树
树与森林的遍历
树的遍历(三种方式)
先根遍历
若树不空,则先访问根结点,然后依次先根遍历各子树
后根遍历
若树不空,则先依次后根遍历各子树,然后访问根结点
层次遍历
若树不空,则自上而下,从左至右访问树中每个结点
普通树无中序遍历
森林的遍历
将森林看作由三部分构成
- 森林中第一棵树的根结点
- 森林中第一棵树的子树森林
- 森林中其它树构成的森林
先序遍历
若森林不空,则
- 访问森林中第一棵树的根结点
- 先序遍历森林中第一棵树的子树森林
- 先序遍历森林中(除第一棵树外)其余树构成的森林
中序遍历
若森林不空,则
- 中序遍历森林中第一棵树的子树森林
- 访问森林中第一棵树的根结点
- 中序遍历森林中(除第一棵树外)其余树构成的森林