https://iq.opengenus.org/rope-data-structure/ написание c ++ для split(i)
:
Разделение (I) Чтобы разбить строку в любой заданной точке i
, есть два основных случая, которые мы могли бы встреча:
Во втором случае мы можем уменьшить его до гораздо более простого первого, разбив строку в данной точке на 2 конечных узла и создав нового родителя для этих строк компонента. Затем выполните вычитание весов отрезанных частей из родительских узлов и перебалансировку дерева.