前言
树、二叉树、森林间一共有三种转换,作为一种应用题的类型出现,小编在这里以真题为典型例证为大家撰写转换过程,愿为大家开阔思路,增添自考胜算。
基本概念
树
英文名字为Tree,一类重要的数据结构,是n(n≥0)个结点的有限集合。相关特征:
(1)当n=0时,即为空树
(2)当n>0时,有且仅有一个称为根的结点,除根结点外,其余结点分为m(m≥0)个互不相交的非空集合T1,T2,....,这些集合中的每一个都是一棵树,称为根的子树。
有图有真相:
二叉树
英文名字为BinaryTree,n(n≥0)个元素的有限集合,该集合或者为空,或者由一个根及两棵互不相交的左子树和右子树组成,其中左子树和右子树也均为二叉树。
有图有真相:
森林
英文名字为Forest,m(m≥0)棵互不相交的树的集合,树的每个结点的子树是森林。删除一个非空树的根结点,它的子树便构成森林。
有图有真相:
具体转换
树→二叉树
原理:
(1)将所有兄弟结点连接起来
(2)保留第一个兄弟结点与父结点的连接,断开其他兄弟结点与父结点的连接,
(3)以根结点为轴心按顺时针的方向旋转45°角
例证:
2014年10月
32.将题32图所示的一棵树转换为二叉树。
(1)将所有兄弟结点连接起来
(2)保留第一个兄弟结点与父结点的连接,断开其他兄弟结点与父结点的连接
(3)以根结点为轴心按顺时针的方向旋转45°角
森林→二叉树
原理:
(1)将每棵树转换成相应的二叉树
(2)将得到的各棵二叉树的根结点看作是兄弟连接起来
例证:
此题由2011年10月的真题转化而来(目前没有考过这种转换)
将图所示的森林转换为对应的二叉树
(1)将每棵树转换成相应的二叉树
→
→
→
(2)将得到的各棵二叉树的根结点看作是兄弟连接起来
二叉树→森林
原理:
(1)在待转换的二叉树中,断开根结点与右孩子的连线,保留左孩子的连线,得到两棵二叉树
(2)将两棵二叉树中的孩子结点的右孩子分别与父结点断开,与根结点相连,成为最初根结点左孩子的兄弟结点
(3)将二叉树中的孩子结点的左孩子逆时针旋转45°
例证:
2011年10月
31.将题31图所示的一棵二叉树转换成森林
(1)在待转换的二叉树中,断开根结点与右孩子的连线,保留左孩子的连线,得到两棵二叉树
→
(2)将两棵二叉树中的孩子结点的右孩子分别与父结点断开,与根结点相连,成为最初根结点左孩子的兄弟结点
→
→
(3)将二叉树中的孩子结点的左孩子逆时针旋转45°
→
→
最终结果为:
→
结语
树、二叉树、森林三者之间的转换中,自我认为树与二叉树之间转换是基础,二叉树→森林和森林→二叉树之间转换是以树→二叉树的转换前提的,只要理解其中的核心观念,无论在考试中以怎样的形式出现,大家都可以轻而易举做出来。愿大家自考加油哦