Изменения

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

Rope

16 байт убрано, 23:04, 5 июня 2014
Нет описания правки
===Псевдокод===
'''char''' get('''int''' i,Node node):
'''if''' ('''not''' isNil(node)): '''if''' (node.left >= i):
'''return''' get(i, node.left)
'''else''':
'''return''' get(i - node.left.w, node.right)
'''else''':
'''return''' node.s[i]
t2.w = node.w - i
'''Pair''' res
'''if''' ('''not''' isNil(node)): '''if''' (node.left.w >= i):
res = split(node.left, i)
t1 = res.first
t2.left = res.second
t2.right = node.right
'''else''':
res = split(node.right, i - node.left.w)
t1.left = node.left
t1.right = res.first
t2 = res.second
'''else''':
t1.s = node.s.substr(0, i)
t2.s = node.s.substr(i, s.len)
91
правка

Навигация