Посему ты предлагаешь делать это мне снова и снова :)
Ja Ja
Я пока делаю простое дерево в памяти и пытаюсь вникнуть в суть проблемы.
tree.h и еще одной реализации - пока хватает.
Вот и делай - *простое* дерево :)
Ну да. А *ето* как же?
Понял, что (для параллельной обработки дерева) нужно делать нисходящее
деление/объединение.
Слияние\разделение делается снизу вверх, ибо возникает на листовом
уровне
Вот ведь, а как же
"Сверху-вниз и слева-направо :)"
--
Я без проблем сделал добавление делением сверху. Обратного движения нету.
Минусы - лишняя работа в случае добавления дубля. И жопа в случае
внутреннего нода с емкостью равной двум. Дерево может начать бесконечно
расти. Но это экстремальный размер нода.
С удалением, тоже вроде должно получится.... то есть балансировка дерева
будет соблюдена.
Будем считать, что это оптимистическая реализация - когда мало конфликтов
при встаке и мало холостых удалений.
Зачем ? Ключ в предке по-прежнему не больше, чем первый ключ след.
уровня
Вот это мне и было интересно. Я тоже об этом подумал, но меня терзают
сомнения, что такое хамское удаление будет создавать мертвые зоны в дереве
... То есть ноды в которые больше никогда не будут добавлять новые элементы.
Коваленко Дмитрий.