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(); } }
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} => "); } }