Изменения

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

Многомерное дерево отрезков

54 байта добавлено, 17:15, 5 июня 2015
Обновление
<code>
update(newElem, x1, x2, ..., xP, x1Left, x1Right, x2Left, x2Right, ..., xPLeft, xPRight, leftBorder, rightBorder, node)
'''if ''' leftBorder != rightBorder
med = (leftBorder + rightBorder) / 2
'''if ''' med >= newElem.x(P+1)
update(newElem, x1, x2, ..., xP, x1Left, x1Right, x2Left, x2Right, ..., xPLeft, xPRight, leftBorder, med, node * 2 + 1)
'''else'''
update(newElem, x1, x2, ..., xP, x1Left, x1Right, x2Left, x2Right, ..., xPLeft, xPRight, med + 1, rightBorder, node * 2 + 2)
'''if ''' последняя координата '''for ''' I = 1..n '''if ''' xILeft != xIRigth
t[x1][x2]...[xP][node] = t[x1][x2]...[xI * 2 + 1]...[node] <tex>\times</tex> t[x1][x2]...[xI * 2 + 2]...[node]
'''return'''
t[x1][x2]...[xP][node] = newElem.value
'''else''' '''if ''' leftBorder != rightBorder
update(newElem, x1, x2, ..., xP, node, x1Left, x1Rigth, x2Left, x2Right, ..., leftBorder, rightBorder, 0, m - 1, 0)
</code>
Анонимный участник

Навигация