相关疑难解决方法(0)

您应该以什么顺序将一组已知的密钥插入B树以获得最小高度?

给定固定数量的键或值(存储在数组或某些数据结构中)和b-tree的顺序,我们可以确定插入键的顺序,这将生成一个节省空间的b树.

为了说明,考虑3阶的b树.让密钥为{1,2,3,4,5,6,7}.按以下顺序将元素插入树中

for(int i=1 ;i<8; ++i)
{
 tree.push(i);  
}
Run Code Online (Sandbox Code Playgroud)

会像这样创建一棵树

        4
     2      6
   1  3   5   7
Run Code Online (Sandbox Code Playgroud)

http://en.wikipedia.org/wiki/B-tree

但是以这种方式插入元素

flag = true;
for(int i=1,j=7; i<8; ++i,--j)
{
    if(flag)
    {
        tree.push(i);
        flag = false;
    }
    else
    {
        tree.push(j);
        flag = true;
    }   
}
Run Code Online (Sandbox Code Playgroud)

创建一个这样的树

    3 5
1 2  4  6 7
Run Code Online (Sandbox Code Playgroud)

我们可以看到水平有所下降.

那么是否有一种特定的方法来确定可以减少空间消耗的插入顺序?

algorithm b-tree data-structures

23
推荐指数
3
解决办法
6007
查看次数

标签 统计

algorithm ×1

b-tree ×1

data-structures ×1