Exemplo n.º 1
0
        public void BFS(Node <T> root)
        {
            DataStructures.Queue.Queue <Node <T> > queue = new DataStructures.Queue.Queue <Node <T> >();
            queue.Enqueue(root);
            while (!queue.IsEmpty())
            {
                Node <T> current = queue.Dequeue();
                if (current == null)
                {
                    continue;
                }

                foreach (var neighbor in current.Neighbors)
                {
                    queue.Enqueue(neighbor);
                }
                //DO SOMETHING WITH THE CURRENT NODE
                Console.WriteLine($"{current.Value} => ");
            }
        }
Exemplo n.º 2
0
        private static void Merge <T>(Vector.Vector <T> vec, int low, int middle, int high) where T : IComparable <T>
        {
            DataStructures.Queue.Queue <T> q1 = new DataStructures.Queue.Queue <T>();
            DataStructures.Queue.Queue <T> q2 = new DataStructures.Queue.Queue <T>();

            for (int i = low; i <= middle; ++i)
            {
                q1.Enqueue(vec[i]);
            }

            for (int i = middle + 1; i <= high; ++i)
            {
                q2.Enqueue(vec[i]);
            }

            int index = low;

            while (q1.Count > 0 && q2.Count > 0)
            {
                if (q1.Peek().CompareTo(q2.Peek()) < 0)
                {
                    vec[index++] = q1.Dequeue();
                }
                else
                {
                    vec[index++] = q2.Dequeue();
                }
            }

            while (q1.Count > 0)
            {
                vec[index++] = q1.Dequeue();
            }

            while (q2.Count > 0)
            {
                vec[index++] = q2.Dequeue();
            }
        }