Ответ 1
Все эти структуры данных используются для решения различных задач:
- Дерево сегментов хранит интервалы и оптимизировано для запросов "какие из этих интервалов содержат заданные точки".
- Дерево интервала также хранит интервалы, но оптимизировано для "того, какие из этих интервалов перекрываются с заданным интервалом". Он также может использоваться для точечных запросов - подобно дереву сегментов.
- Дерево диапазонов хранит точки и оптимизировано для запросов "какие точки попадают в заданный интервал".
- Двоичное индексированное дерево хранит элементы - подсчет на индекс и оптимизирован для "количества элементов между индексами m и n".
Производительность/расход пространства для одного измерения:
- Дерево сегментов - время предварительной обработки O (n logn), время вывода O (k + logn), O (n logn) space
- Дерево интервала - время предварительной обработки O (n logn), время запроса O (k + logn), O (n) пространство
- Дерево диапазонов - время предварительной обработки O (n logn), время O (k + logn), O (n) пространство
- Двоичное индексированное дерево - O (n logn) время предварительной обработки, время вывода O (logn), O (n) пространство
(k - количество сообщенных результатов).
Все структуры данных могут быть динамическими, в том смысле, что сценарий использования включает в себя как изменения данных, так и запросы:
- Дерево сегментов - интервал может быть добавлен/удален в O (logn) времени (см. здесь)
- Дерево интервала - интервал может быть добавлен/удален в O (logn) time
- Дерево диапазонов - новые точки могут быть добавлены/удалены в O (logn) времени (см. здесь)
- Двоичное индексированное дерево - количество элементов для индекса может быть увеличено за время O (logn)
Более высокие размеры (d > 1):
- Дерево сегментов - O (n (logn) ^ d) время предварительной обработки O (k + (logn) ^ d) время запроса O (n (logn) ^ (d-1)) пространство
- Дерево интервала - время предварительной обработки O (n logn), O (k + (logn) ^ d) время запроса, пространство O (n logn)
- Дерево диапазонов - O (n (logn) ^ d) время предварительной обработки O (k + (logn) ^ d) время запроса O (n (logn) ^ (d-1)) ) пространство
- Двоичное индексированное дерево - O (n (logn) ^ d) время предварительной обработки O ((logn) ^ d) время запроса O (n (logn) ^ d) пространство