可持久化treap

本文介绍了可持久化Treap,一种能够方便地进行持久化的平衡树结构。传统的平衡树如splay由于旋转操作不适用于持久化,而Treap结合了随机权值的特性,保证了其平均情况下高度为O(logn)。通过fhqtreap方法,利用merge和split操作,可以高效地维护Treap,并实现可持久化。在需要持久化时,每次操作创建新节点即可完成。
摘要由CSDN通过智能技术生成

平衡树是一个有用的结构,但是常用的splay等由于均摊复杂度和旋转操作,无法方便的可持久化。

这时候跳出一个treap,他可以可持久化!

treap是一种笛卡尔树,有两个值:位置与权。这样构建出来的treap满足两个性质:1、左儿子位置小于当前节点小于右儿子,2、儿子的权值小于父亲。容易猜想,若权值随机,则树高是O(logn)。

使用类似二叉堆的旋转操作可以很方便的维护treap,但是还有一种更好的方法。

fhqtreap:平衡树中有两个操作非常关键:merge和split。其他大多数操作可以通过这两种操作实现。

(merge表示把两颗treap左右相接成一个新的treap,split表示把treap以某个元素为界分成两段)

不妨先考虑merge(a,b)。若val[a]>val[b],就递归合并rs[a]和b,否则合并a和ls[b]。

没了。。


如果需要可持久化,对每个操作建立新的节点,没了。。

<

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值