① 对于平衡二叉树而言,树高的规律:
高度为h的平衡二叉树的含有的最少结点数(所有非叶节点的平衡因子均为1):
n0=0,n1=1,n2=2
含有的最多结点数:
(高度为h的满二叉树含有的结点数)
② 对于折半查找判定树树高:(和完全二叉树相同)
n=
或者
补充:折半查找最多比较次数为
③ 对于二叉排序树的树高:
最大为n,最小:
④ 红黑树的树高的性质:
1.从根节点到叶节点的最长路径不大于最短路径的2倍。
这是每条路径上的黑结点相同,并且不能出现相邻的红节点导致的。
2.红黑树中任何左子树和右子树的高度差,不会超过两倍。
3.若根节点黑高为h,内部结点数(关键字)最少
个。(满树的结点数)。
最多有
个。
4.若红黑树总高度=h,则根节点黑高>=h/2,因为不能出现相邻的两个红节点。又因为内部节点数
,所以:
⑤ 对于B树:m表示阶数
最小高度:
若要让B树的高度最小,在关键字数量不变的情况下,应该让每棵树尽可能满。对于m阶B树而言,每个结点最多有m-1个关键字以及m个分叉,则:
最大高度:
最大高度---让各层的分叉尽可能的少,即根节点只有2个分叉,其他结点只有个分叉。各层结点至少有:第一层 1、第二层 2、第三层.... 第h层,第h+1层共有叶子结点(失败结点):个(第h+1层是叶子结点,则该树有h层)。
为什么n个关键字的B树有n+1个叶子结点?因为n个关键字把(-∞,+∞)分为了n+1个区域,这n+1个区域对应n+1种失败的情况,即n+1个失败节点(叶子结点)。
⑥ 对于败者树:败者树是一棵完全二叉树,如下图所示:
注意:其实冠军结点不需要额外空间进行保存
不算冠军结点,败者树得树高是,如下图所示是6个初始结点的败者树
补充:败者树的查找深度是:,
假设k路归并对应的败者树树高为h(这里的h不包括最上面的头),对于1棵完全二叉树,第h层最多有
个节点,k路归并的败者树叶子节点为k,所以
。
所以h-1=
,对比的次数刚好和分支结点(下面的灰色结点)的层数相同,分支节点的层数为h-1,所以关键字对比次数=
。
假设需要进行1024路归并,按照传统的方法,每次从1024个关键字中挑选最小的关键字,需要1023次对比,而采用败者树,只需要
,也就是10次对比。很显然,大大减少了关键字对比的次数。
注意:
其实是关键字对比的上限。在如下图所示的五路归并的败者树中:
但是,若填补的新元素在b0,b1,b2的位置,他们中间的分支节点只有2层,只需要对比2次,对于b3,b4位置填补的新元素,则需要对比3次。
⑦ 对于m叉树:
(1)度为 m 的树第 i 层至多有
个结点(i>=1),所以m叉树第 i 层至多有
个结点(i>=1)。
(2)高度为 h 的 m 叉树至多有
个结点。
(3)对于度为m的数而言,高度为h、度为m的树至少有 h+m-1 个结点。
(4)具有n个结点的m叉树的最小高度为
整理一下得到:
对三个部分分别取对数:
由于中间部分要大于h-1,所以h最小为
对于树高不记得公式也没事,根据性质现推就行。