Изменения

Перейти к: навигация, поиск

Реализация запроса в дереве отрезков сверху

4 байта добавлено, 14:53, 15 мая 2012
Алгоритм
==Алгоритм==
''Замечание.''
Используем в алгоритме не отрезки, а полуинтервалы(левая граница включительно, а правая - нет).
Пусть есть уже [[Дерево отрезков. Построение|построенное дерево отрезков]] и идет запрос на полуинтервале <tex>[a .. b)</tex>.
В качестве параметров рекурсий передаем следующие переменные:
* <tex>node</tex> {{---}} номер(в массиве с деревом отрезков) текущей вершины дерева.
* <tex>a</tex>, <tex>b</tex> {{---}} левая и правая границы запрашиваемого полуинтервала.
Пусть <tex>l</tex>, <tex>r</tex> {{---}} это левая и правая границы полуинтервала, за которые "отвечает" наша вершин.
Запустим рекурсивную процедуру от всего полуинтервала (то есть от корневой вершины).
Для текущего состояния проверяем следующие условия :
''Например'': текущий и искомый <tex>[2..4)</tex>;
* Иначе переходим к рекурсивным вызовам функций от детей вершины. При этом возвращаем значение на текущем полуинтервале, как функцию(соответствующую типу нашего запроса) от результатов выполнения на детях.
''Замечание:''
Анонимный участник

Навигация