public static void Union_NonEmptyHeap_ReturnsSortedOrder()
        {
            var oddHeap = new FibonacciHeap <int>();

            for (var i = 1; i < 10; i += 2)
            {
                oddHeap.Push(i);
            }

            var evenHeap = new FibonacciHeap <int>();

            for (var i = 0; i < 10; i += 2)
            {
                evenHeap.Push(i);
            }

            oddHeap.Union(evenHeap);

            for (var i = 0; i < 10; i++)
            {
                Assert.AreEqual(i, oddHeap.Pop());
            }

            Assert.Zero(oddHeap.Count);
            Assert.Zero(evenHeap.Count);
        }
        public static void Union_EmptyHeap_BecomesOtherHeap()
        {
            var thisHeap  = new FibonacciHeap <int>();
            var otherHeap = BuildTestHeap();

            var minNode    = otherHeap.Peek();
            var otherCount = otherHeap.Count;

            Assert.Zero(thisHeap.Count);

            thisHeap.Union(otherHeap);

            Assert.Zero(otherHeap.Count);
            Assert.AreEqual(thisHeap.Peek(), minNode);
            Assert.Throws <InvalidOperationException>(() => otherHeap.Peek());

            Assert.AreEqual(otherCount, thisHeap.Count);
        }
Ejemplo n.º 3
0
 private FibonacciHeap <int> UnionHeap()
 {
     InitHeap();
     _heap1.Union(_heap2);
     return(_heap1);
 }