69
правок
Изменения
→Псевдокод
Пусть результат считаем на отрезке [left, right]. При этом значения left и right, передающиеся в функцию, должны указывать на листья дерева (необходимо увеличить значение на индекс массива, с которого начинаются листья). Переменные left_res и right_res будут собирать значения на отрезках, отделившихся соответственно слева или справа от рассматриваемого.
'''int''' query(left: '''int''', right: '''int'''): left_res = '''neutral'''; right_res = '''neutral''';
'''while''' left < right
'''if''' left '''mod ''' 2 == 0 left_res = left_res <tex> \circ </tex> data[left]; left = left '''div ''' 2; '''if''' right '''mod ''' 2 == 1 right_res = data[right] <tex> \circ </tex> right_res; right = (right - 1) '''div ''' 2;
'''if''' left == right
left_res = left_res <tex> \circ </tex> data[left]; '''return''' left_res <tex> \circ </tex> right_res;
==Ссылки==