В стандартной реализации структуры данных Веревка с использованием splay-деревьев узлы будут упорядочены в соответствии со статистикой рангов, измеряющей положение каждого из них в начале строки, поэтому ключи обычно находятсяв бинарном дереве поиска не будет иметь значения, не так ли?
Я спрашиваю, потому что клавиши, показанные на рисунке ниже (спасибо Википедии!), Являются буквами, которые, вероятно, станут неуникальными, если число узлов превысит длину выбранного алфавита.Не лучше ли использовать целые числа или вообще не использовать ключи?
Отдельно, может ли кто-нибудь указать мне на хорошую реализацию логики для пересчета статистики рангов после каждой операции?
Предположительно, если индекс для разбиения попадает в подстроку, присоединенную к определенному узлу, скажем, между "Hel" и "llo_" на узле E выше, вы удалили бы подстроку из E, разделив ееи присоединить его как двоих потомков Е. Правильно?
Наконец, после определенного числа таких операций, у дерева, как я полагаю, может оказаться столько листьев, сколько букв.Каков наилучший способ отслеживать это и обрезать дерево (путем объединения подстрок) по мере необходимости?
Спасибо!