228
правок
Изменения
→Пример
[[Файл:Шагал1538.JPG|right|380px|thumb|Дерево отрезков]]
Рассмотрим работу программы на дереве отрезков для элементов <tex>[1 .. 8]</tex>.Пусть запрашиваемая сумма - это отрезок <tex>[2 .. 5]</tex>.
*Текущий отрезок <tex>[1 .. 8]</tex>, он больше <tex>[2 .. 5] </tex> => переходим по рекурсивным вызовам на <tex>[1 .. 4] </tex> и <tex>[5 .. 8]</tex>
*<tex>[1 .. 4] </tex> выходит за границы <tex> [2 .. 5]</tex>, <tex>[5 .. 8] </tex> выходит за границы <tex>[2 .. 5] </tex> => переходим по рекурсивным вызовам на <tex>[1 .. 2]</tex>, <tex>[3 .. 4] </tex> и <tex>[5 .. 6]</tex>, <tex>[7 .. 8]</tex>.
*<tex>[1 .. 2] </tex> выходит за границы <tex>[2 .. 5] </tex> => переходим в листья 1, 2; <tex>[3 .. 4] </tex> целиком внутри <tex>[2 .. 5] </tex> => возвращаем значение в <tex>[3 .. 4]</tex>;<tex>[7 .. 8] </tex> не пересекается с <tex>[2 .. 5] </tex> => возвращаем нулевое значение, <tex>[5 .. 6] </tex> выходит за границы <tex>[2 .. 5] </tex> => переходим к листьям 5 и 6
*лист 6 не пересекается с отрезком <tex>[2 .. 5] </tex> => возвращаем нулевое значение, лист 5 целиков внутри <tex>[2 .. 5] </tex> => возвращаем значение в листе 5.
==Реализация==