Изменения

Перейти к: навигация, поиск

B-дерево

24 байта убрано, 22:01, 2 апреля 2012
Добавление ключа
Вставка ключа в B-дерево $T$ высоты $h$ за один нисходящий проход по дереву потребует $O(h)$ обращений к диску и $O(th)=O(tlog_g n)$ процессорного времени.
$B-TREETree-INSERT Insert(T, k)$
{
$r = T.root$ $if (r.n == 2t - 1)$
{
$s = ALLOCATEAllocate-NODENode()$ $T.root = s$ $s.leaf = FALSE$ $s.n = 0$ $s.c_1 $C_1$ = r$ $B-TREETree-SPLITSplit-CHILDChild(s, 1)$ $B-TREETree-INSERTInsert-NONFULLNonfull(s, k)$
}
$else$ $B-TREETree-INSERTInsert-NONFULLNonfull(r, k)$
}
Функция $B-TREETree-INSERTInsert-NONFULLNonfull$ вставляет ключ $k$ в узел $x$, который должен быть незаполненным при вызове. Использование функции $B-TREETree-SPLITSplit-CHILDChild$ гарантирует, что рекурсия не встретится с заполненным узлом.
</wikitex>
285
правок

Навигация