Обычно дерево представляет собой дерево, построенное с использованием некоторого типа узла, у которого есть список дочерних узлов того же типа, где каждый дочерний узел снова имеет список и так далее.Теперь каждому узлу в дереве соответствует ровно одно слово, и наоборот, поэтому, если вы сделаете дополнительное поле в типе узла, вы можете хранить там дополнительную информацию, такую как номер абзаца.
Чтобы построить это, просто переберите каждое слово и добавьте его в набор, пройдя по блоку и добавив отсутствующие узлы, затем отметьте узел, соответствующий слову, номером абзаца.(не каждый узел на пути к слову, только последний узел)
Обратите внимание, что, поскольку слово может появляться в нескольких абзацах, вам, вероятно, нужен список номеров абзацев в каждом узле.Таким образом, вы также можете иметь пустой список в узлах для слов, которых нет в тексте.