Вот дерево:
Будет один корень.
Каждый узел дерева имеет ноль или более дочерних элементов.
Допускается, чтобы два узла указывали на одного и того же потомка. Скажем, оба узла А
и узел B имеет дочерний элемент C.
Однако запрещено, что
Узел A является потомком Узла B, и
Узел Б является потомком Узла А.
Один запрещенный случай -
Узел A имеет дочерний узел C и узел D,
Узлы C и D имеют дочерний узел E,
Узел E имеет дочернего элемента A.
Вопрос в том, как определить этот круг наиболее быстро?
ОБНОВЛЕНИЕ : Я понимаю, что это найти любой цикл в ориентированном графе. Только сейчас мне удалось придумать решение, похожее на алгоритм Тарьяна.
Спасибо за комментарии.