Beispiel #1
0
        /// <summary>
        /// Deletes and returns minimum of heap.
        /// </summary>
        /// <returns>Deleted minimum (or null if empty).</returns>
        public Node <T, E> DeleteMinimum()
        {
            if (Roots.Head == null)
            {
                return(null);
            }
            LastOperationSteps = 0;

            var oldMin       = Minimum;
            var childrenList = Minimum.Children;

            Minimum.ReleaseChildren();
            Roots.SafeDeleteNode(Minimum);
            NodesCount--;
            Roots.Merge(childrenList);

            LastOperationSteps = childrenList.NodesCount;
            Consolidation();
            return(oldMin);
        }