У меня есть класс Java, узел следующим образом:
class Node
{
public ArrayList<Node> nbrs;
}
Каждый объект Node содержит список всех своих соседей в ArrayList nbrs и ничего больше.
Теперь мне нужно написать функцию:
public Node copy( Node curr )
Эта функция должна выполнять глубокую копию всего графа с корнем в curr и возвращать эквивалентную копию для curr.
Я попытался реализовать конструктор копирования в классе Node следующим образом:
public Node( Node n )
{
for( Node curr : n.nbrs )
n.nbrs.add( new Node( curr ));
}
Теперь я копирую Node n в моей функции копирования.
Но я обнаружил, что когда граф содержит циклы, этот код продолжает работать бесконечно.
Любая помощь в том, как мне решить эту проблему.
PS: Это вопрос интервью, с которым столкнулся мой друг, поэтому класс Node не может содержать больше переменных