平衡树的一些性质

1.分裂合并treap的时间复杂度

从treap的随机权值来看,treap其实是在建立一颗笛卡尔树,而随机序列的笛卡尔树是log级的

2.常数较小的插入删除

考虑从根节点开始递归,如果当前插入值小于递归所在节点则递归左儿子,否则递归右儿子。

当插入值的随机权值大于递归节点时,插入值应该作为这个子树的根节点。

至于左右子树,我们可以直接把递归所在节点的子树split,两个根节点分别作为插入值的左右儿子。

考虑分析一下常数,设递归停止的节点深度为depth,则递归复杂度为O(depth),split复杂度为O(log n-depth),所以常数仅为一倍log n

而普通的平衡树带3的常数(split,merge,merge)

3.一些神秘的平衡树

  • 1.圣诞树(朝鲜树):反正不管怎么叫,它就是深度大于sqrt(n)则暴力重构

作用不得而知

  • 2.\(\frac{1}{size}\)的平衡树:\(size\)为子树大小,每一次插入点是从根节点递归,每到一个节点有\(\frac{1}{size}\)重构这棵树,否则继续递归。

时间复杂度证明与\(treap\)类似。它的子树大小期望为\(log\),定位后分裂子树的期望时间复杂度仅为\(O(1)\)

  • 3.\(a/a+b\)平衡树:这种平衡树不设随机权值,而是使用子树大小。设两个合并的树一棵大小为\(a\),另一颗大小为\(b\),那么以\(a/a+b\)概率令a为根节点,\(b/a+b\)概率令b为根节点

其实还是从随机序列的笛卡尔树深度来考虑,因为a子树的根节点有a/a+b的概率随机权值最大,所以直接以\(a/a+b\)概率让它作为根节点

4.重量平衡树

posted @ 2024-08-12 09:40  星河倒注  阅读(41)  评论(0)    收藏  举报