/// <summary>
        /// 获取堆的迭代器,元素以降序排列。
        /// </summary>
        /// <returns></returns>
        public IEnumerator <Key> GetEnumerator()
        {
            MaxPQ <Key> copy = new MaxPQ <Key>(this.n);

            for (int i = 1; i <= this.n; i++)
            {
                copy.Insert(this.pq[i]);
            }

            while (!copy.IsEmpty())
            {
                yield return(copy.DelMax()); // 下次迭代的时候从这里继续执行。
            }
        }
        /// <summary>
        /// 获取堆的迭代器,元素以降序排列。
        /// </summary>
        /// <returns>最大堆的迭代器。</returns>
        public IEnumerator <Key> GetEnumerator()
        {
            var copy = new MaxPQ <Key>(n);

            for (var i = 1; i <= n; i++)
            {
                copy.Insert(pq[i]);
            }

            while (!copy.IsEmpty())
            {
                yield return(copy.DelMax()); // 下次迭代的时候从这里继续执行。
            }
        }