Ответы пользователя по тегу Алгоритмы
  • Как рекурсивно обойти объект не заходя в циклически ссылки?

    @xxx3Vxxx
    Программист C++
    Либо внутри свойства держать признак того что оно посещено (в алгоритмах на графах такое используется, например окрашивание вершин при поиске в глубину), либо, как написали выше, хранить посещенные (например, в хеш-таблице).

    При этом, кстати, алгоритму не нужно быть рекурсивным. Можно использовать очередь.
    Помещаешь в очередь первый элемент, а далее цикл пока очередь не пустая.
    В цикле выбираешь из очереди первый элемент и закидываешь в очередь всех его не посещенных потомков. Посещаешь выбранный элемент.
    См. "поиск в ширину" и "поиск в глубину".
    Ответ написан
    Комментировать