Treap實現的名次樹

2022-08-17 04:06:15 字數 1031 閱讀 5174

1.感覺之前邵叔叔教的做fib的那個支援刪除(其實刪除只是打標記,而且不支援插入。。。)和查詢的排序二叉樹就是個靜態的名次樹嘛。我居然學到了這麼奇怪的資料結構。。。

2.寫的時候坑了幾次

(1)不要亂用引用,getkth裡那個引數o沒過腦子用了引用,結果把樹搞爛了,一堆ch[x]賦值成null了。

(2)寫查詢的時候lchsize(3)過載小於號玩脫了。坑了好久。用小於號以前沒對指標解除引用。那個if總是進去,每次都左旋,然後基本搞成一條鏈。果然我語言沒學好嗎。

poj1442

code

#include #include #include #include using

namespace std;

struct node

int cmp(int x) const

};void rotate(node* &o,int d)

void insert(node* &o,int x)

o->maintain();

}void remove(node* &o,int x)

else

if(o->ch[1]==null)else

}else remove(o->ch[d],x);

if(o!=null) o->maintain();

}int find(node* &o,int x)

return 0;

}int getkth(node* o,int k)

}return 0;

}void print(node* o,int h)

printf("[%d]",o->v,h);

if(o->ch[1]!=null)

}const

int m=30000;

int m,n,p=0,ans,a[m+1],u;

node* root=null;

int main()

return 0;

}

void clear(node* &o)

模板 講解 Treap名次樹

題目鏈結 學平衡樹的過程可以說是相當艱難。瀏覽blog的過程中看到大量指標版平衡樹,不擅長指標操作的我已經接近崩潰。於是,我想著一定要寫一篇非指標實現的treap的blog。具體如下。treap 樹堆,tree heap 是一種強大的資料結構 每個節點除了本身鍵值 v 之外,附有乙個隨機優先順序 p...

並查集 treap實現名次數 BZOJ2733

time limit 10 sec memory limit 128 mb submit 1351 solved 710 submit status 永無鄉包含 n 座島,編號從 1 到 n,每座島都有自己的獨一無二的重要度,按照重要度可 以將這 n 座島排名,名次用 1 到 n 來表示。某些島之間...

Treap樹的基本操作

3.treap的操作 同其他樹形結構一樣,treap的基本操作有 查詢,插入,刪除等。3.1 查詢 同其他二叉樹一樣,treap的查詢過程就是二分查詢的過程,複雜度為o lg n 3.2 插入 在treap 中插入元素,與在bst 中插入方法相似。首先找到合適的插入位置,然後建立新的節點,儲存元素。...