Data structures B树中的节点数

Data structures B树中的节点数,data-structures,b-tree,Data Structures,B Tree,在最小度为t的B树中,除根节点外的每个非叶节点至少有t个子节点,最多有2*t个子节点。假设键{1,2,3…,n}插入序列1,2,3…,n中最小度为2的空B树中。最后的B树有多少个节点? 根据我的理解,我觉得它应该是n/t,因为每个节点可以拥有的最小密钥数是k,而密钥总数是n。我说的对吗??如果不告诉我哪里出了问题,我应该怎么做?答案是(n-2)*log(n-2)使用t=2我们知道除了根节点之外的每个节点都必须至少有t−1=1个键,最多2t−1=3个键。最后一棵树最多可以有n个−n时为1个节点≥2

在最小度为t的B树中,除根节点外的每个非叶节点至少有t个子节点,最多有2*t个子节点。假设键{1,2,3…,n}插入序列1,2,3…,n中最小度为2的空B树中。最后的B树有多少个节点?


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

答案是
(n-2)*log(n-2)
使用
t=2
我们知道除了根节点之外的每个节点都必须至少有t−1=1个键,最多2t−1=3个键。最后一棵树最多可以有n个−n时为1个节点≥2.除非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-树中的节点数为#节点=∑(i=1)^h▒【(2^i-1)】=2h+1−2.−h=n−lg(n+1)。所以对于任何n,最后的B-树必须有n−⌊lg(n+1)⌋≤#节点≤N−1(如果n≥2) .

已回答@