我有一個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