Проблема в том, что у вас недостаточно информации в дереве.
Путь, ведущий к узлу, помеченному 6
, указывает оба (обычно все ) вхождения в исходном слове. То, что вы хотите сделать, это когда вы обрабатываете префиксы, как описано в алгоритме, вы хотите хранить индексы в узлах. Вообще говоря, алгоритм не будет хранить такую информацию, но это легко изменить.
Каждый раз, когда вы получаете доступ к узлу, напишите добавление позиции в исходной строке в список позиций совпадения.
- (пустое дерево)
- (путь "si", узел "6" (дополнительная информация в узле "6": 4-5), остаток дерева)
- и т.д.
- (путь "si", узел "6" (дополнительная информация в узле "6": 4-5, 7-8), остаток дерева)
- и т.д. * * тысяча двадцать-одна