RRB-Tree 与 Splay 操作

共 17 题
#

1. Splay 动态维护括号序列/文本编辑器的工程实现中隐式 Treap(按位置分裂)实现 O(log n) 插入/删除/翻转

A 节点的实际键值
B 节点的优先级
C 子树大小作为隐式下标,表示位置 ✓ 正确答案
D 插入时间戳
#

2. Splay 在序列维护的双向链表的 O(1) 旋转工程实现。

A O(1) ✓ 正确答案
B O(log n)
C O(n)
D O(log² n)
#

3. FAT Node 在保留多版本共享节点的工程实现。

A 每次修改只需 O(1) 空间,无需复制整条路径 ✓ 正确答案
B 查询永远最快
C 不需要版本号
D 只能用于线段树
#

4. Path Copying 在 Persistent Data Structure 的 O(1) 节点共享。

A 每个版本都复制一份完整子树
B 未修改子树被删除
C 通过指针共享,新复制的路径节点直接指向旧版本未修改的子树 ✓ 正确答案
D 用 FAT Node 存储
#

5. Sleator-Tarjan 静态最优性定理的工程实现。

A Splay 一定比任何 BST 快
B Splay 只适用于随机访问
C 对任意固定访问序列,Splay 的代价与最优静态 BST 同阶,无需预知访问分布 ✓ 正确答案
D Splay 需要预知元素频率
#

6. RRB-Tree 的核心中如何在可持久化向量上实现 O(log n) 的 concat/append,与 Clojure PersistentVector 的 tail 优化?

A 只能 append 不能 concat
B 分支因子变成 1
C 完全不用 radix 树
D 允许节点部分填充(relax),从而支持 O(log n) 的 concat ✓ 正确答案
#

7. RRB-Tree 为什么能做到 O(log n) 的 concat,radix 树结构与重平衡(rebalancing)如何避免逐元素复制?

A 整层节点整合 + 重平衡,把 O(n) 个元素打包进 O(log n) 个节点 ✓ 正确答案
B 每次复制一个元素
C 用数组存储所有元素
D 哈希表
#

8. Splay 的双旋(zig-zig/zig-zag)中为什么能摊还 O(log n),而单旋会退化?

A 双旋更快
B 单旋实现不了
C 双旋能充分释放势能、降低路径深度,保证摊还 O(log n);单旋在反复访问深层节点时退化为 O(n) ✓ 正确答案
D 双旋占用更少空间
#

9. Splay 的区间操作中用哨兵与懒标记实现区间翻转/插入/删除的基本框架?

A 消除边界特判,使 [l,r] 区间可统一通过两次 splay 定位 ✓ 正确答案
B 让查找更快
C 增加节点数
D 用于存储懒标记
#

10. Splay 与随机 Treap 的对比中为什么 Treap 用随机优先级实现期望平衡,而 Splay 用访问局部性实现均摊平衡?

A Splay 是概率平衡
B 二者都用随机优先级
C 二者都用势能分析
D Treap 用随机优先级实现期望平衡,Splay 用访问即旋转与局部性实现均摊平衡 ✓ 正确答案
#

11. Path Copying 在 Functional Programming 的核心实现。

A 让不可变数据结构能高效"更新"(生成新版本),未修改部分与旧版本共享 ✓ 正确答案
B 让数据可变
C 增加副作用
D 强制深拷贝
#

12. Splay 在区间翻转的 split 与 merge 操作工程实现。

A 直接删除
B 逐元素复制
C 把目标节点 splay 到根,利用其左右子树分离 ✓ 正确答案
D 用哈希表分裂
#

13. Splay 维护区间信息的 lazy 标记下推顺序(文艺平衡树模板)中 access 后 splay 到根,先下推祖先标记再操作子树

A 为了减少节点数
B 为了加快旋转
C 祖先的懒标记尚未反映到子树,需要先自上而下下推,否则读到错误状态 ✓ 正确答案
D 懒标记不需要下推
#

14. Splay 势能分析中 rotate 摊还 3(log s(v)-log s(u)) 的逐项推导中 zig-zig/zig-zag 两种情况的势能变化计算

A 每一步都只算 O(1)
B 中间节点的 size 对数值在求和时对消,只剩 x 到根的变化 ≤ log n ✓ 正确答案
C 势能恒为 0
D 与 size 无关
#

15. Zig-Zig 与 Zig-Zag 操作的势能分析与 O(log n) 摊还证明。

A 摊还代价与势能无关
B 摊还代价 ≤ 1
C 摊还代价 = O(s(x))
D 摊还代价 ≤ 3(log s'(x) − log s(x)) ✓ 正确答案
#

16. RRB-Tree 与 Immutable.js 的实现对比中结构共享与缓存局部性差异?

A 都是可变链表
B 都是不可变 + 分支因子 32 的 radix trie + 结构共享 ✓ 正确答案
C 都用哈希表存储
D 都不支持共享
#

17. RRB-Tree 的工程价值中相比普通持久化向量的 concat 复杂度优势?

A append 从 O(1) 变慢
B concat 从 O(n) 优化到 O(log n) ✓ 正确答案
C 访问变成 O(n)
D 无法共享结构