Изменения

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

Дерево отрезков. Построение

533 байта добавлено, 13:31, 1 июня 2013
Псевдокод
tmp.valueOfFunction = f(tmp.L, tmp.R);
return tmp;
 
Node change(Tree, parent, node, l, r, i, x)
//изменить i-ый элемент на x
if r - l == 1
return new Node(x);
else
m = (l + r) / 2;
Node tmp = node.clone();
tmp.parent = parent;
if i <= m
tmp.L = change(Tree, tmp, node.L, l, m, i, x);
else
tmp.R = change(Tree, tmp, node.R, m, r, i, x);
tmp.valueOfFunction = f(tmp.L, tmp.R);
if(node.parent == null)
roots[Tree.countOfVersions() + 1] = tmp;
return tmp;
</code>
Здесь функция функции <tex>recAdd()</tex> и <tex>change</tex> возвращает указатель на узел новой ветки.
==Ссылки==
38
правок

Навигация