伸展树:逐层伸展

探讨了通过逐层伸展策略优化搜索树的方法,即当一个节点被访问时将其调整到树根位置以利用数据访问的局部性原理,旨在减少连续多次查找操作的时间复杂度。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

局部性

Locality: 刚被访问过的数据,极有可能很快地再次被访问。这一现象在信息处理过程中屡见不鲜。
BST: 刚刚被访问过的节点,极有可能很快地再次被访问。
连续的m次查找(m >> n = |BST|),采用AVL一共需要O(mlogn)的时间。
利用局部性,能否更快呢?
策略:节点一旦被访问,随即调整到树根。

逐层伸展

节点V一旦被访问,随即转移到树根
一步一步往上爬,自下而上,逐层单旋
zig(v -> parent)
zag(v -> parent)
最终V被推送到树根

实例


最坏情况

旋转次数呈周期性的算术级数演变:每一周期累计Ω(n^2),分摊Ω(n)!

低效率的根源

1、全树拓扑始终呈现单链表结构,等价于一维列表。
2、被访问节点的深度,呈周期性的算术级数演变,平均为Ω(n)
n-1, n-2, n-3, ..., 3, 2, 1; n-1, ...

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值