У меня есть интервалы в форме (a1, b1), (a2, b2), ...., (an, bn)
.
Я хотел бы поддержать следующие операцииПоиск всех интервалов, которые не пересекаются с точкой
- Добавление нового интервала.
- Удаление существующего интервала.
- Учитывая точку, найдите все интервалы, которые не пересекаются с точкой.
Дерево интервалов - это простое решение, если мы хотим найти интервалы, которые пересекаются с точкой. Как насчет случая, когда мы хотим найти непересекающиеся интервалы?
Что означают «добавить» и «удалить»? Если добавление '(2,4)' к '(1,3)' производит '(1,3), (2,4)' или '(1,4)'? – Oriol
@Oriol - думаю, что это должно быть '(1,3), (2,4)' –
Вы можете вставить в дерево дополнительные интервалы: вместо [a, b] вставить [-inf, a] и [Ь, + инф]. Обязательно сохраняйте идентичность исходных интервалов. –