В стандартна реализация на структура на данни Rope, използваща разпръснати дървета, възлите биха били подредени според статистика за ранг, измерваща позицията на всеки един от началото на низа, така че ключовете, които обикновено се намират в дървото за двоично търсене, биха били без значение, нали?
Питам, защото ключовете, показани на графиката по-долу (благодаря на Wikipedia!) са букви, които вероятно биха станали неуникални, след като броят на възлите надхвърли дължината на избраната азбука. Не би ли било по-добре да се използват цели числа или да се избягва използването на ключове?
Отделно, може ли някой да ме насочи към добра реализация на логиката за преизчисляване на статистики за ранг след всяка операция?
Предполага се, че ако индексът за разделяне попада в подниза, прикачен към конкретен възел, да речем, между "Hel" и "llo_" на възел E по-горе, вие ще премахнете подниза от E, ще го разделите и ще го прикачите отново като две деца на E. Правилно?
И накрая, след известен брой такива операции, дървото може да се окаже с толкова листа, колкото и букви. Какъв би бил най-добрият начин да следите това и да подрязвате дървото (чрез комбиниране на поднизове), ако е необходимо?
Благодаря!