0001 #include "BinTree/BinTree.h" //引入二叉树节点模板类 0002 #include "PQ/PQ.h" //引入优先级队列ADT 0003 0004 template <typename T> 0005 class PQ_LeftHeap : public PQ<T>, public BinTree<T> { //基于二叉树,以左式堆形式实现的PQ 0006 public: 0007 PQ_LeftHeap() {} //默认构造 0008 PQ_LeftHeap( T* E, int n ) //批量构造:可改进为Floyd建堆算法 0009 { for ( int i = 0; i < n; i++ ) insert( E[i] ); } 0010 PQ_LeftHeap( PQ_LeftHeap& A, PQ_LeftHeap& B ) { //合并构造 0011 _root = merge( A._root, B._root ); _size = A._size + B._size; 0012 A._root = B._root = NULL; A._size = B._size = 0; 0013 } 0014 void insert( T ); //按照比较器确定的优先级次序插入元素 0015 T getMax(); //取出优先级最高的元素 0016 T delMax(); //删除优先级最高的元素 0017 }; // PQ_LeftHeap