“Link–Cut Tree 为动态森林问题维护一片 represented forest:这是用户语义中的动态有根森林。结构另外根据最近的 access 选择 preferred edges…”
形式陈述 ​
伸展操作 ​
伸展树是同时属于二叉搜索树与自调整数据结构的结构:先按普通 BST 搜索目标节点或最后访问节点,再重复旋转到根:父为根时做一次 zig;节点与父同为左孩子或同为右孩子时做 zig-zig,先转祖父再转父;方向相反时做 zig-zag,两次围绕节点旋转。split
Access lemma ​
令
zig-zig 同时显著缩短两层祖先链,是望远镜估计成立的关键;只把节点逐层单旋虽能移到根,却没有相同序列界。插入、删除可归约为常数次 access、split、join,因此摊还
直觉
伸展把本次访问路径整体重排,而不维护颜色或高度证书。zig-zig 与 zig-zag 让被访问节点上升的同时压缩其祖先路径;子树秩势记录这次重排积累或释放的结构能量,所以单步可线性,整段访问仍有对数摊还和更细的序列敏感界。
例子与边界
访问序列例子 ​
若依次访问有序键
边界与开放问题 ​
树高可为
2026 年 7 月 20 日的一份 arXiv v1 预印本给出了显著的新上界:伸展树相对离线最优动态 BST 为
竞争,并称这是首个
推论与应用
伸展树没有显式平衡字段,其访问界由势能法证明:以节点子树大小的对数秩求和为势,zig-zig 与 zig-zag 的旋转成本由秩下降支付。
序列敏感界 ​
若键
删除可先伸展目标到根,使左右子树分离,再伸展左树最大节点并挂接右树。若搜索未命中,通常伸展最后访问节点以保留 access lemma;什么也不伸展会改变后续序列性质。
一次访问怎样偿还旋转 ​
设访问前路径为
Access lemma 用秩
沿一串操作相加时中间秩差望远镜消去,才得到
参考资料
- Daniel Sleator, Robert Tarjan, Self-Adjusting Binary Search Trees, JACM, 1985.
- Robert Tarjan, Sequential Access in Splay Trees Takes Linear Time, Combinatorica, 1985.
- Petr Chmel et al., Splay Trees Are Almost Dynamically Optimal, arXiv:2607.18498v1, 20 July 2026.