一.平衡树:
1.定义:任意节点的子树的高度差都小于等于1的树
2.中序遍历是有序序列
二.左旋,右旋
1.左旋:
2.右旋:
三.AVL树:
维持平衡:左旋转,右旋转(zag,zig)
左左局面:右旋
右右局面:左旋
左右局面:左旋+右旋
右左局面:右旋+左旋
注意:左旋右旋不影响中序遍历序列
四.Treap:
1.定义:既满足堆(heap),也满足树(tree)
2.节点定义以及初始化:
struct node{
int l,r,key,val,cnt,size;//相同点的数列(cnt),子树大小(size),左子树(l),右子(r)
}tr[N];
//新增节点的初始化函数
int get_node(int key){
tr[++idx].key&#