winnertree.h

来自「清华大学计算机系数据结构课程教材《数据结构 用面向对象方法和C++描述》(殷人昆」· C头文件 代码 · 共 33 行

H
33
字号
#ifndef WINNER_TREE
#define WINNER_TREE
#define maxValue 10000
template <class T>
class WinnerTree {
private:
	int maxSize;		//允许的最大选手数
	int n;			//当前大小(外部结点数)
	int lowExt;		//最远层外部结点数
	int offset;			//偏移(加1即为第1个外结点)
	int *t;			//胜者树数组
	T *e;			//选手数组
	void Play (int k, int lc, int rc);
public:
    //static const T maxValue = 10000;	//序列中不可能的大值
    WinnerTree (int TreeSize = 20)	//构造函数
         : maxSize(TreeSize), n(0) { 
	t = new int[TreeSize];
	for(int i = 0; i < TreeSize; ++i)
	t[i] = maxValue;
	}		
    ~WinnerTree() { delete []t; }	//析构函数
    bool Initial (T a[], int size);
    bool rePlay (int i);
							//重构
    void Update() { e[t[1]] = maxValue; }	//修改
    int Winner() const { return (n != 0) ? e[t[1]] : 0; }	//取最终胜者
	int Winner (int i) const { return (i < n) ? t[i] : 0; }//取第i个胜者
	int Winner (int a, int b) { return (e[a] <= e[b]) ? 
                       a : b;}	//取两外结点胜者
};
#endif

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?