Обычно, когда вы используете поиск по дереву для решения проблемы, каждый узел представляет какое-то возможное «состояние» мира (например, кто на какой стороне моста), а дочерние элементы каждого узла представляют все возможные »преемник состояний "(новые состояния, которые могут быть достигнуты за один ход из предыдущего состояния).Поиск в глубину затем представляет собой попытку выполнить один из вариантов, пока он не зайдет в тупик, затем выполнить резервное копирование до последнего состояния, в котором был доступен другой параметр, и опробовать его.Поиск в ширину представляет собой параллельное тестирование множества вариантов и определение того, когда первый из них найдет целевой узел.
С точки зрения фактического способа кодирования этого, вы бы представили его как многоходовое дерево.Каждый узел, вероятно, будет содержать текущее состояние плюс список указателей на дочерние узлы.
Надеюсь, это поможет!