树、森林、二叉树
树、森林、二叉树的相互转换
普通树转化为二叉树
步骤如下:
- 加线 - 在所有兄弟结点之间加一条直线
- 去线 - 对树中的每个结点,只保留它与第一个孩子结点的连线,删除它与其他孩子结点之间的连线
- 层次调整 - 以树的根节点为轴心,将整棵树顺时针旋转一定的角度,使之结构层次分明
如图的二叉树:
(0)初始态
(1)加线
(2)去线
(3)调整
森林到二叉树的转换
步骤:
- 把每棵树转化为二叉树
- 将所有二叉树的根节点相连,然后调整位置
(0)初始态
(1)二叉树转换
(2)连接根节点
(3)调整
二叉树转化为树、森林
二叉树转换为普通树是刚才的逆过程,步骤也就是反过来而已。
树与森林的遍历
🍉树的遍历方式分为两种:先根遍历和后根遍历
- 先根遍历:
先访问树的根节点,然后再依次先根遍历每课子树。 - 后根遍历:
先依次后根遍历每棵子树,然后再访问根节点。
先根遍历结果:A B E F G G D H I J
后根遍历结果:E F B G C H I J D A
🔔森林就是多个树的集合,因此森林的遍历也分为先根遍历和后根遍历。
先序遍历:从第一棵树开始,使用先根遍历遍历,然后遍历下一颗树;
后序遍历:从第一棵树开始,使用后根遍历遍历,然后遍历下一颗树;
如图中的树,
先序遍历结果为:A B C D E F G H J I
后序遍历结果为:B C D A F E J H I G
🔔发现规律
森林的前序遍历和二叉树的前序遍历结果相同;
森林的后序遍历和二叉树的中序遍历结果相同。