树的常考性质
树作为重要的数据结构,通常在操作系统,算法等领域起着重要的作用。其特殊性质需要我们了解并且运用,在考研中他们通常会以选择题的形式出现,我们需要熟练掌握并且能够准确地计算。
一.结点数 = 总度数 + 1
这个性质是显而易见的,总度数就是这个树中每个结点的度数和。由于树的特殊结构以及度数的定义,我们可以发现第n-1层的结点度数之和就是第n层的所有结点数量,如此循环往复,我们就能知道从第1层到第n层的结点度数和实际上就是除了根节点之外的所有结点的数量。虽然根节点之上并没有其他结点,但是这不影响我们知道根节点只有一个,因此我们可以得到重要推论就是:结点数 = 总度数 + 1。
二.度为m的树和m叉树的区别
度为m的树 | m叉树 |
任意结点度数最多等于m | 任意节点度数最多等于m |
至少有一个结点的度等于m | 允许所有结点的度都小于m |
不允许为空树 | 可以为空树 |
实际上度为m的树和m叉树是两个不同的概念,其中度为m的树是对于某一个已经具体存在的树的描述,而m叉树则是一种特殊的亚结构,是一种数据结构的定义。度为m的树要求它已经是棵树了而且度必须为m,这就要求它必须存在,所以不能为空树,同时至少有一个结点的度为m。而m叉树是一种抽象的结构,是一种对树的约束规则的具体表现形式,它可以为空树,但是每个结点的度数必须小于等于m。简单来讲,度为m的树强调这是一棵已经存在的,度为m的树;m叉树在强调这一种树在结构上必须严格遵守任一结点度都小于m这一规定。
三.度为m的树,第i层最多有
个结点
这里强调了一点:最多,因此当度为m的树中结点最多时它是一棵满树,同时由于其每一个结点最多度为m,此时它从结构上看就是一颗满m叉树,因此这时它的第i层就是第i-1层的m倍,所以这导致其每层结点个数呈1,m, ......
。(第一层是m的0次方,但是是第一层,所以和层数对应是要减一,从而有
)
四.高度为h的m叉树,至多有
个结点
这里再次强调了至多,同上,它从结构上看就是一棵满m叉树。求结点数时这里使用到了等比数列的前n项和公式,我们从第三个性质很容易看出来满m叉树的每一层结点数其实就是一个公比为m,首项为1的等比数列。因此这里直接使用等比数列求和公式求出这个结果。
等比数列求和公式:。直接带入公式得到结果。
五.高度为h的m叉树至少有h个结点;高度为h,度为m的树至少有h+m-1个结点
这里其实可以作为一个理解m叉树和度为m的树之间区别的契机。高度为h的m叉树不见得度为m,只是它强调每个结点的度最大为m,因此当它高度为m时允许每个结点度为h,这样串成一串下来,这时它的结点是最少的,此时除了叶子结点外每一个结点的度为1。
度为m的树则又多加了一个限制:至少有一个结点度为m,这时我们可以在高度为h的m叉树的基础上再多增加几个结点使其度数增加到m,由于高度是h已经限定死了,我们不能在叶子结点上增加,这样会导致h增加,因此我们只能再额外增加m-1个,使得某一个非叶子结点的度从1增加到m。
六.具有n个结点的m叉树的最小高度为
这个性质是最难的,也是很常考的性质,这个性质通过计算得来。
当具有限定的n个结点时,m叉树为完全m叉树时高度是最少的。简单来说就是我们如果将构造这棵树的过程理解为把游离的结点一个一个放到树上,我们将按照每一层的每一个结点的顺序一个一个放,并且满足每一个结点的度都达到m,一个结点不放完,不允许放下一个。
这时我们假设n个结点放完后它的高度为h,我们使用性质四:高度为h的m叉树,至多有个结点。所以我们可以发现h和n的关系就出来了:
< n ≤
。
这是因为n个结点不见得组成了一个满m叉树,因此它的结点数可能比最大值小,因为是高度为h时的最大值。但是n一定比
小,因为他是树只有h-1层时的最大值。所以它的值介于二者之间,我们通过这个关系便算出了h的取值范围,从而能得到它的最小高度。
1. < n ≤
2. < n(m-1) ≤
3. < n(m-1)+1 ≤
4. h-1 < ≤ h
这样一来我们就知道了h和h-1和n的关系,因为 处于h-1和h之间,因此它是一个小数,当然高度不能是小数,然而它是由n通过数学运算得到的结果,其本身拥有浓烈的数学性:这里的h代表的其实是满m叉树算出来的高度h,h-1也是满m叉树情况下得到的结果,而仅给的结点数n不见得可以组成相应的满m叉树,所以通过n算出来的结果实际上代表了完全二叉树通过相应公署推导出的数学结果,简单来说,它的高度到h了,但是不是一个满二叉树,差这么几个结点,而这种情况在数学上表现为高度是一个大于h-1小于h的小数。然而只要第h层有一个结点,这个树也应该是h层,因此我们对它向上取整,得到了
。