Exemple #1
0
        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();
        }
Exemple #2
0
        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);
        }