Изменения

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

Декартово дерево

Нет изменений в размере, 12:47, 22 января 2016
Merge
[[file:merge.png|thumb|400px|Операция merge]]
Рассмотрим вторую операцию с декартовыми деревьями {{---}} <tex>\mathrm{Mergemerge}</tex> (''слить'').
С помощью этой операции можно слить два декартовых дерева в одно.
ключи во втором(''правом''). В результате получается дерево, в котором есть все ключи из первого и второго деревьев.
<tex>\mathrm{Mergemerge}(T_1, T_2) \to \{T\}</tex>
Рассмотрим принцип работы этой операции. Пусть нужно слить деревья <tex>T_1</tex> и <tex>T_2</tex>.
Псевдокод:
'''func''' Mergemerge(t : '''Treap''', t1 : '''Treap''', t2 : '''Treap'''):
'''if''' t1 == ''null'' '''or''' t2 == ''null''
'''if''' t1 != ''null''
t = t2
'''else if''' t1.y > t2.y
Mergemerge(t1.right, t1.right, t2)
t = t1
'''else'''
Mergemerge(t2.left, t1, t2.left)
t = t2
172
правки

Навигация