Exemplo n.º 1
0
        public UndirectedGraphNode CloneGraph(UndirectedGraphNode node)
        {
            var visited = new Dictionary <UndirectedGraphNode, UndirectedGraphNode> ();
            var queue   = new List <UndirectedGraphNode> ();
            int start   = 0;

            if (node == null)
            {
                return(null);
            }

            queue.Add(node);
            var newHead = new UndirectedGraphNode(node.label);

            visited.Add(node, newHead);

            while (start < queue.Count)
            {
                foreach (var n in queue[start].neighbors)
                {
                    if (!visited.ContainsKey(n))
                    {
                        visited [n] = new UndirectedGraphNode(n.label);
                        queue.Add(n);
                    }

                    visited [queue [start]].neighbors.Add(visited [n]);
                }

                start++;
            }

            return(newHead);
        }
Exemplo n.º 2
0
        public UndirectedGraphNode CloneGraph(UndirectedGraphNode node)
        {
            var visited = new Dictionary<UndirectedGraphNode, UndirectedGraphNode> ();
            var queue = new List<UndirectedGraphNode> ();
            int start = 0;

            if (node == null) {
                return null;
            }

            queue.Add (node);
            var newHead = new UndirectedGraphNode (node.label);

            visited.Add (node, newHead);

            while (start < queue.Count) {
                foreach (var n in queue[start].neighbors) {
                    if (!visited.ContainsKey (n)) {
                        visited [n] = new UndirectedGraphNode (n.label);
                        queue.Add (n);
                    }

                    visited [queue [start]].neighbors.Add (visited [n]);
                }

                start++;
            }

            return newHead;
        }