📄 treap_b.cpp
字号:
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
typedef struct node{
int ky,rp;
struct node *lc,*rc;
} Node;
void lc_rolate(Node *&r){
Node *t;
t = r->rc;
r->rc = t->lc;
t->lc = r;
r = t;
}
void rc_rolate(Node *&r){
Node *t;
t = r->lc;
r->lc = t->rc;
t->rc = r;
r = t;
}
void ins(Node *&r,int d){
if (r==NULL){
r = new Node;
r->lc = NULL; r->rc = NULL;
r->ky = d; r->rp = rand();
return;
}
if (d < r->ky){
ins(r->lc,d);
if (r->lc->rp < r->rp) rc_rolate(r);
} else {
ins(r->rc,d);
if (r->rc->rp < r->rp) lc_rolate(r);
}
}
void del(Node *&r,int d){
if (r==NULL) return;
if (d<r->ky){ del(r->lc,d); return; }
if (d>r->ky){ del(r->rc,d); return; }
if (r->lc!=NULL && r->rc!=NULL){
if (r->lc->rp < r->rc->rp){
rc_rolate(r); del(r->rc,d);
} else {
lc_rolate(r); del(r->lc,d);
}
return;
}
if (r->lc!=NULL){
rc_rolate(r); del(r->rc,d); return;
}
if (r->rc!=NULL){
lc_rolate(r); del(r->lc,d); return;
}
delete r; r = NULL;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -