public static void IsMaxHeap <T>(IHeap <T> heap)
            where T : IComparable <T>
        {
            var heapList = heap.ToList();

            for (int i = 0; i < heap.Count; i++)
            {
                if (2 * i < heap.Count)
                {
                    Assert.True(heapList[i].CompareTo(heapList[2 * i]) >= 0,
                                $"Value {heapList[i]} at index {i} is less than {heapList[2 * i]} at index {2 * 1}");
                }
                if ((2 * i) + 1 < heap.Count)
                {
                    Assert.True(heapList[i].CompareTo(heapList[(2 * i) + 1]) >= 0,
                                $"Value {heapList[i]} at index {i} is less than {heapList[(2 * i) + 1]} at index {(2 * i) + 1}");
                }
            }
        }