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 中插入方法相似。首先找到合適的插入位置,然後建立新的節點,儲存元素。...