public void Test() { UndirectedGraphNode node1 = new UndirectedGraphNode(0); UndirectedGraphNode node2 = new UndirectedGraphNode(1); UndirectedGraphNode node3 = new UndirectedGraphNode(2); node1.neighbors.Add(node2); node1.neighbors.Add(node3); node2.neighbors.Add(node1); node2.neighbors.Add(node3); node3.neighbors.Add(node1); node3.neighbors.Add(node2); node3.neighbors.Add(node3); UndirectedGraphNode node = node1; UndirectedGraphNode copy = CloneGraph(node); Console.ReadLine(); }
public UndirectedGraphNode CloneGraph(UndirectedGraphNode node) { if (node == null) { return(null); } UndirectedGraphNode newNode = new UndirectedGraphNode(node.label); dict.Add(node, newNode); foreach (UndirectedGraphNode neighbor in node.neighbors) { if (dict.ContainsKey(neighbor)) { newNode.neighbors.Add(dict[neighbor]); } else { newNode.neighbors.Add(CloneGraph(neighbor)); } } return(newNode); }