我有一个Java类,节点如下:深度复制Java中
class Node
{
public ArrayList<Node> nbrs;
}
每个节点对象包含它的ArrayList中NBRS内的所有邻居的列表,而不是其他。
现在我需要编写一个函数:
public Node copy(Node curr)
该函数应执行在CURR根的整个图形的深层副本,并为CURR返回等效副本。
我试过类节点中实现拷贝构造函数如下:
public Node(Node n)
{
for(Node curr : n.nbrs)
n.nbrs.add(new Node(curr ));
}
我现在复制节点n,我复印功能中。
但我发现当图形包含循环时,这段代码会无限地运行。
任何帮助我应该如何克服这个问题。
PS:这是面对我的朋友一个面试问题,所以类节点不能包含任何更多的变数
我喜欢你的方法,谢谢!我认为这是最简单的实现方式,因为不需要递归。 – arya 2012-03-26 10:52:26