B树中的节点数

时间:2014-10-18 13:54:56

标签: data-structures b-tree

在最小度为t的B树中,除root之外的每个非叶节点至少有t个子节点且最多2 * t个子节点。假设密钥{1,2,3 ...,n}被插入到空B树中,序列1,2,3 .....,n中的度数为2。最终B树有多少个节点?

根据我的理解,我觉得它将是n / t,因为每个节点可以拥有的最小密钥数是k,并且密钥的总数是n。我对么??如果没有告诉我我哪里出错了,我应该怎么做?

2 个答案:

答案 0 :(得分:0)

答案为(n-2)*log(n-2) t=2

答案 1 :(得分:0)

我们知道除root之外的每个节点必须至少有t-1 = 1个密钥,最多2t-1 = 3个密钥。当n≥2时,最终树最多可以有n-1个节点。除非n = 1,否则永远不会有n个节点,因为我们只将密钥插入非空节点,因此总会有至少一个节点有2个密钥。接下来观察我们在一个节点中永远不会有多个键,这个键不是我们B树的右脊。这是因为我们插入的每个键都大于存储在树中的所有键,因此它将插入到树的右侧脊中。当除右侧脊柱中最深节点之外的每个节点具有2个键并且右侧样条中的最深节点具有3个键时,出现最少可能的节点数。因此,在高度1,1个节点,高度为2,3个节点,......,在h级,2h-1个节点。在这种情况下,n =Σ(i = 1)^ h±2 ^ i + 1 = 2h + 1-1其中h是B树的高度,B-Tree中的节点数是#nodes =Σ(i = 1)^h▒〖(2 ^ i-1)〗= 2h + 1-2-h = n-lg(n + 1)。所以对于任何n,最终的B树必须有n-⌊lg(n + 1)⌋≤#nodes≤n-1(如果n≥2)。