A B-Tree - это отсортированная структура данных, связывающая ключи со значениями.B-деревья позволяют обрабатывать огромное количество данных и гарантировать поиск, вставку и удаление в логарифмическом времени. BTree Package на SqueakSource следует протоколу Smalltalk Dictionary
:
at:
и at:ifAbsent:
используются для поиска значений, заданных ключом, at:put:
используется для вставки пары ключ-значение, а removeKey:
используется для удаления ключа.
Кроме того, все функции итератора, которые вы знаете изDictionary
поддерживаются (do:
, keysDo:
, valuesDo:
, keysAndValuesDo:
, ...);а также еще несколько для перебора диапазонов ключей (from:do:
, from:to:do:
, upTo:do:
, ...).Обычно вам не нужны коллекции B-Tree в коде приложения, если только у вас нет проблем с производительностью встроенного класса Dictionary
.
Мне кажется, что вы пытаетесь изменить внутреннюю работуB-дерево.Вы не должны этого делать, класс BTree
автоматически реорганизуется, чтобы всегда обеспечивать наиболее эффективное представление (это в основном то, что проверяют тесты).Если вы хотите управлять своим собственным деревом, почему бы не создать свой собственный класс Node
, содержащий OrderedCollection
дочерних узлов и родительскую ссылку?