数据结构的持久化

可持久化数据结构 可持久化数据结构上的运算在修改自身时(比如插入、删除这样的运算),会先记录一个改变前的状态作为历史版本,这个历史版本往往是可继续查阅和修改的。可持久化数据结构按“持久化程度”可分2大类: 1) 部分持久化数据结构:所有历史版本都可供查询,但只能基于最新版本修改数据; 2) 完全可持久化数据结构:所有历史版本都可查询修改; 通常来说设计可持久化数据结构的主要思想是“拷贝部分原有内容+复用部分原有内容”。所以可持久化数据结构的空间复杂度会介于“非可持久化数据结构”和“每次修改前完整克隆当前版本”这两种情况之间。下面就来讨论如何基于Treap构建可持久化的平衡树,这里需要引入一个称为无旋Treap的数据结构,因为“可持久化+旋转”比较难一起处理。   无旋Treap  (a)   (b)… 阅读全文