Изменения

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

Навигация