Дерево отрезков


Дерево отрезковструктура данных, позволяющая находить значение некоторой ассоциативной функции на произвольном отрезке массива за асимптотику . Наиболее часто в качестве берутся функции суммы, произведения, максимум и минимум.

Дерево отрезков представляет собой корневое дерево, листьями которого являются элементы исходного массива, а другие вершины имеют по 2 ребенка. Каждой вершине в соответствие поставлен интервал, являющийся объединением интервалов ее детей (если у вершины есть дети), либо интервал, содержащий конкретный элемент массива (для листьев). Кроме того, для каждой вершины хранится значение некоторой ассоциативной функции на данном интервале. Данное дерево будет иметь логарифмическую высоту, так как количество уровней не будет превышать

Пусть наш массив имеет элементов: .

Выберем такое, что . Дополним наш массив справа нейтральными элементами так, чтобы его длина равнялась . Тогда для хранения дерева отрезков, построенного на элементах массива , нам понадобится массив из ячеек.