"Kovalenko Dmitry" ...
По-разному, вестимо :)
См. BTR_remove_node :-D
Да я рехнуся, если еще и туда полезу :)
Посему ты предлагаешь делать это мне снова и снова :)
Я пока делаю простое дерево в памяти и пытаюсь вникнуть в суть проблемы. tree.h
и еще одной реализации - пока хватает.
Вот и делай - *простое* дерево :)
Понял, что (для параллельной обработки дерева) нужно делать нисходящее
деление/объединение.
Слияние\разделение делается снизу вверх, ибо возникает на листовом уровне
PS Я не понял в чём конкретно твои сомнения...
Ключ первого элемент каждого нода дерева используется на уровне родителя.
Есть такие ключи, которые уходят вверх по дереву. То есть юзаются и у дедушки и
у прадедушки.
Когда грохается элемент с таким ключом, надо бы его везде у предков обновить.
Зачем ? Ключ в предке по-прежнему не больше, чем первый ключ след. уровня
При спуске вниз по дереву такое не сделаешь, потому что вместо этого ключа надо поставить следующий. А следующего мы узнаем только
спустившись до нижних листьев дерева - когда найдем удаляемый элемент.
Вопрос FB - обновляет такие ключи у всех предков или только у непосредственного
родителя?
FB не делает лишней работы, когда её можно не делать. По крайней мере таковы
намерения :) Ключи вверху удаляются если внизу было объединение страниц. Если
это привело к объединению страниц и вверху, то процесс продолжается рекурсивно,
вплоть до корня дерева.
--
Хорсун Влад