Изменения

Перейти к: навигация, поиск
Алгоритм
:''Например'': текущий <tex>[1..3)</tex>, а искомый <tex>[3 .. 5)</tex>;
* Если текущий полуинтервал совпадаетлежит внутри запрашиваемого полуинтервала, то возвращаем значение в текущей вершине.
:''Например'': текущий и искомый <tex>[2..4)</tex>;
* Иначе переходим к рекурсивным вызовам функций от детей вершины. При этом возвращаем значение на текущем полуинтервале, как функцию (соответствующую типу нашего запроса) от результатов выполнения на детях.
''Замечание.''
При передаче новых параметров следует изменять не только границы, за которые отвечает текущая вершина, но и границы запрашиваемого полуинтервала, чтобы на последующих шагах произошло полное совпадение полуинтервалов.
Так как каждый полуинтервал разбивается не более, чем на <tex>O(\log n)</tex> полуинтервалов (поскольку на каждом уровне дерева может быть не более двух полуинтервалов из разбиения, а всего уровней <tex>\log n</tex> ), то данная реализация выполняется за <tex>O(\log n)</tex>.
Анонимный участник

Навигация