同学问我替罪羊树和带插入的区间k小, 我说没有太大兴趣, 结果立了个flag...... 本文不加证明地介绍了替罪羊树, 这种简洁高效, 不用旋转的重量平衡树. link: - cls的集训队论文 <重量平衡树和后缀平衡树在信息学奥赛中的应用> - vfk的论文 <对无旋转操作的平衡树的一些探究> - 发明人的论文 Scapegoat Trees - neither_nor神犇对发明人论文的翻译
重量平衡树
每次操作影响的最大子树的大小是最坏, 或均摊, 或期望
替罪羊树是不采用旋转机制的重量平衡树. 插入均摊
Treap是采用旋转机制的重量平衡树. 插入, 查询, 删除期望
两种平衡
如果一棵二叉树
如果一个节点
大小平衡是高度平衡的充分非必要条件. 从最深的节点往上爬, 连续使用大小平衡的定义,
替罪羊树
替罪羊树的每个节点, 除了左右儿子的指针, 不用记录其他信息. 方便起见, 可以记录
查询
替罪羊树的查询和普通BST一样.
插入
先像普通BST一样插入. 维护
一定存在替罪羊节点, 因为非高度平衡可以推出非大小平衡.
重建操作可以在
删除
先像普通BST一样删除. 如果
性质
如果只有插入操作, 替罪羊树是
如果同时有插入,删除, 替罪羊树是非严格