Каждый узел представляет некоторую степень из 2 ^ n элементов, где n - высота узла. Дерево сегментов никогда не использует 2 соседних узла, потому что тогда, если оно может использовать двух соседей, оно будет использовать их родителя. Кроме того, поскольку диапазоны непрерывны, он никогда не будет использовать 2 узла в одном слое и некоторый узел, который находится ниже этого уровня и представляет некоторый диапазон между этими 2 узлами. Поэтому на каждом слое будет выбрано не более 2 узлов. Сегментное дерево состоит из O (log n) слоев, поэтому каждый запрос использует O (log n) узлов.
EDIT 1:
Фактическая граница ячейка (log_2 N) неверна, и вот один из примеров: На этом рисунке представлено дерево сегментов для массива длиной 8. Если мы сделаем запрос [1,6] (индексы, начинающиеся с нуля), он будет использовать 4 вершины (они черные на изображении) и 4 > ceil(log_2(8)) = 3