минимальный запрос диапазона дерева сегментов

Я пытаюсь понять деревья сегментов. Это отличное руководство, в котором показано, как найти минимум в ассортименте. Однако там сказано, что «Все уровни построенного дерева сегментов будут полностью заполнены, кроме последнего уровня. Кроме того, дерево будет полным двоичным деревом, потому что мы всегда делим сегменты на две половины на каждом уровне». Я не понимаю, как происходит добавление? Например, если мы добавим еще два элемента 6 и 10 — куда они должны деваться? В правильное поддерево? Если да, то будет 5 не очень сбалансированных и половинок не равных. Должен ли я каким-то образом изменить порядок дерева и снова выполнить вычисления?


person Bob    schedule 01.10.2014    source источник


Ответы (1)


Эта реализация дерева сегментов не поддерживает операцию добавления, поэтому невозможно добавить новый элемент.

person kraskevich    schedule 01.10.2014
comment
Можете ли вы привести пример, какая реализация поддерживает операцию добавления? - person Bob; 01.10.2014
comment
Вы можете использовать сбалансированное двоичное дерево поиска для хранения узлов дерева сегментов, чтобы сделать возможным добавление новых элементов. - person kraskevich; 01.10.2014
comment
Но при балансировке придется пересчитывать расстояния, что не очень эффективно. - person Bob; 01.10.2014
comment
Пересчет требуется только для тех узлов, которые повернуты или находятся на пути от корня к новому листу. Таких узлов всего O(log N). - person kraskevich; 01.10.2014