1、树、森林与二叉树转换的意义算法
二叉树因为每一个结点最多只能有左孩子和右孩子,而在树中一个结点能够包括任意数目的子结点,所以二叉树的不少性质和算法被研究了出来。若是全部的树都向二叉树同样方便就行了。树与二叉树、森林与二叉树之间能够相互转换,并且这种转换是一一对应的。blog
2、树转换为二叉树队列
为了操做方便,假设树是一棵有序树,也就是说将树中每个结点的孩子按从左到右的顺序进行编号,二叉树
将树转换为二叉树的步骤为:遍历
由转换过程可知,树与由它转换成的二叉树是一一对应的,树中的任意一个结点都对应着二叉树中的每个结点,树中每个结点的第1个孩子结点在二叉树中是对应结点的左孩子,而树中每一结点的右邻兄弟在二叉树中是对应结点的右孩子(E的右邻兄弟是F,因此F是E的右孩子;F的右邻兄弟是G,因此G是F的右孩子)。也就是说,在二叉树中,左分支上的每一个结点在原来的树中是父子关系,而右分支上的各个结点在原来的树中是兄弟关系。因为树中的根结点没有兄弟,因此由树转换成的二叉树永远都是一颗根结点的右子树为空的二叉树。im
3、二叉树转换为树d3
二叉树转换为树是树转换为二叉树的逆过程,具体步骤为:db
4、森林转换为二叉树img
森林是若干棵树的集合,而任何一颗和树对应的二叉树的右子树必定为空,则能够获得将森林转换为二叉树的步骤为:集合
5、二叉树转换为森林
判断一颗二叉树可以转换成一颗树仍是森林,只要看这棵二叉树的根结点有没有右孩子,若是有右孩子就是森林,没有右孩子就是一棵树。二叉树转换为森林的步骤为:
6、树的遍历
树能够被当作由树的根结点和根结点的全部子树所构成的森林两部分构成,所以树的遍历操做主要有前序遍历、后序遍历和层次遍历三种方式。
1.前序遍历:
若树为非空,则
2.后序遍历
若树为非空,则
3.层次遍历
若树为非空,则
7、森林的遍历
森林也能够当作是由第一棵树的根结点、第一棵树的根结点的子树所构成的森林和除第一棵树以外的其他树所构成的森林三部分构成。
1.前序遍历
若森林为非空,则
2.后序遍历
若森林为非空,则
3.层次遍历
若森林为非空,则