小白的数据结构与算法学习笔记(二十二)----树、森林及二叉树的相互转换

版权声明:本文为博主原创文章,未经博主允许不得转载 https://blog.csdn.net/qq_41641805/article/details/81779304

在满足树的条件下,树可以有任意形状,任意多结点,任意多孩子,对这些树的处理十分复杂,因此就想把普通树尽可能转换成二叉树,这样就有规律可循。

一、普通树——>二叉树

1、在树中所有兄弟结点之间加一连线

2、对每个结点,除了保留与其长子(即最左边的孩子)的连线外,去掉该结点与其他孩子的连线(不是去掉与兄弟的连线)

3、调整位置:以树的根结点为轴心,将整棵树顺时针旋转一定角度,使之层次分明

二、森林——>二叉树

1、将森林中每棵树变为二叉树

2、将各二叉树的根结点视为兄弟从左至右连在一起

3、调整位置

三、二叉树——>树、森林

1、若结点x是其双亲y的左孩子,则把x的右孩子,右孩子的右孩子,······,都与y相连

2、去掉所有双亲到右孩子之间连线(原图中的双亲和右孩子!!不是进行第1步之后的双亲和右孩子!!)

 注意:

判断一棵二叉树能够转换成树还是森林:只要看这棵二叉树的根结点有无右孩子!!有右孩子,则为森林;没有右孩子,则为一棵树。

                                                                                                                                                     BY    ZJQ

猜你喜欢

转载自blog.csdn.net/qq_41641805/article/details/81779304