Предполагая, что каждый последующий символ в вашем слове представляет один уровень в вашем дереве, у вас есть пять вариантов проверки для каждого символа (совпадение, удаление, вставка, замена и транспонирование).Я предполагаю, что транспонирование - это два соседних символа.
Вам понадобится функция (CheckNode), которая принимает узел дерева и символ для проверки.Потребуется вернуть набор (дочерних / внучатых) узлов, представляющих совпадения.
Вам понадобится функция (CheckWord), которая принимает слово.Он проверяет каждый символ по очереди на множество узлов.Он вернет набор (листовых) узлов, представляющих совпавшие слова.
Идея состоит в том, что каждый уровень в дереве (дочерний, внучатый и т. Д.) Соответствует позиции символа в слове.Если вы вызовете узел дерева верхнего уровня, уровень 0, то у вас будет уровень 1, уровень 2 и т. Д.
Очевидно, что для слова без ошибок существует однозначное соответствие между позицией символа иуровень в дереве.
Для удаления необходимо пропустить уровень в дереве.
Для вставки необходимо пропустить символ в слове.
Длязамены, вам нужно пропустить и уровень, и символ.
Для транспонирования вам необходимо (временно) поменять местами символы в слове.