Всякий раз, когда вы извлекаете узел из стека, вам нужен способ получения пути, который привел к этому узлу.
Одним из решений является вставка в стек (node, path)
вместо просто значений node
. Если path
является чисто функциональным списком, как в Haskell, это хорошее решение, но в Python это может быть не так идиоматично. Кроме того, хотя путь, строго говоря, не хранится внутри узла, это решение, вероятно, не соответствует духу вопроса.
Другим решением является поддержка отдельного стека, который содержит путь к ранее посещенному узлу. Стек первой глубины содержит кортежи (node, depth)
, где depth
- глубина узла в поиске. Перед добавлением node
в конец пути элементы выталкиваются с пути до тех пор, пока длина пути не будет равна depth
.