用字典树代替平衡树,一个神奇的操作

最近在学平衡树(Splay),想过一道模版题,但是我太弱了,老是写炸,于是想了一种方法代替平衡树,代码长度也十分优秀。

好了,不BB了,让我来讲一下我想出来的方法吧。

首先,我们分析一下Splay吧,思路比较简单,主要是rotate有点难理解其他都和BST差不多,但是代码实现起来有点麻烦,细节也比较多。

对于这道模版题,我的思路是把插入的数都补位,补到10位数(其实只用补到8位),然后把它当作字符串一样插入字典树中,这样就可以保证树的高度是10,不会退化,然后就很爽了♂。

对了,还有要处理负数,这里我就直接用了一个很暴力的方法,加了个偏移量。

详情可以参照我的代码(好像代码风格有点丑)

#include
using namespace std;
const int N = 1000005;
const int PY = 10000000;
int ch[N][10],gs,cnt[N],n,size[N];
void insert(string x){
    int p=0;
    for(int i=0;i>n;
    while(n--){
        cin>>c;
        cin>>x;
        ss=0;
        for(int i=0;i

这一个方法感觉可拓展性不强,欢迎大家讨论(>_<)

你可能感兴趣的:(字典树)