一个函数,它获取一个节点并复制该节点和所有相邻节点以创建一个与该节点完全相同的新结构。
A
/ \
B CE
\ /
D
应该使用新节点创建类似的网络
一个 Node 对象定义为
节点{
Arraylist 邻居;// 返回数组列表中的所有相邻节点
}
这段代码会起作用吗?
public Node copyGraph(Node A){
HashTable<Node, Node> hash = new HashTable<Node, Node> ();
return copyGraphWithHash(A, hash);
}
public Node copyGraphWithHash(Node A, HashTable<Node, Node> hash){
if (A.neighbours.size() == 0)
return null;
Node newfirst = null;
if(!hash.hasKey(A))
newfirst = new Node();
hash.add(A,newfirst);
}
for ( Node n : A.neighbours()){
if (copyGraphWithHash(n, hash))
newfirst.neightbours.add(copyGraphWithHash(n, hash));
}
return newfirst;
}
请建议我在这里缺少什么?