Учитывая фиксированное количество ключей или значений (хранимых в массиве или в некоторой структуре данных) и порядке b-дерева, мы можем определить последовательность вставки ключей, которые будут генерировать эффективное b-tree пространства.
Чтобы проиллюстрировать, рассмотрим b-дерево порядка 3. Пусть ключи будут {1,2,3,4,5,6,7}. Вставка элементов в дерево в следующем порядке
for(int i=1 ;i<8; ++i)
{
tree.push(i);
}
создаст дерево, подобное этому
4
2 6
1 3 5 7
см. 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;
}
}
создает дерево, подобное этому
3 5
1 2 4 6 7
где мы видим, что существует снижение уровня.
Итак, существует ли конкретный способ определения последовательности вставки, которая уменьшит потребление пространства?