Fhq-Treap总结:短小精悍不旋转的神级数据结构

Fhq-Treap是一种无需旋转的平衡树数据结构,结合了二叉搜索树和堆的特性。通过随机权值保持平均O(logN)的期望高度,关键操作包括Merge(合并)、Split(分裂)、Insert(插入)、Del(删除)等。Merge和Split是其平衡性的核心,使得Fhq-Treap在不进行旋转的情况下维持平衡。

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

Fhq-Treap

首先我们从二叉搜索树讲起(顺便复习)

我们知道我们访问一个节点所需要的时间复杂度和他的深度有直接的关系,比如说一个N个节点的完全二叉树访问一个节点的最坏复杂度是 O(logN) O ( l o g N ) ,但是如果在一条N个节点的链中访问一个节点的最坏复杂度就是 O(N) O ( N ) ,所以想要速度够快,那么树的结构一定要尽量平衡,保持在 logN l o g N 左右。

为了使一个树平衡,人们找到了很多方式,譬如说splay,他通过不断旋转的方式使得树一直保持在一个比较平衡的状态。

但是总是在不断旋转真的好麻烦啊(雾
那么有没有不需要旋转的平衡树呢??有那就是fhq神犇的fhq-treap


首先我们得知道什么是Treap
Treap=Binary Search Tree+Heap(二叉搜索树+堆)
也就是说他的整体结构满足二叉搜索树的性质,然而他的每一个节点有一个随机取的附加的关键词,他们满足堆的性质。
那么他是依靠什么维护平衡性的呢?对就是靠的附加权值,因为附加权值是随机取的,每一个权值取到的概率都是相同的,那么他的期望高度就是 logN l o g N 也就是说他大概就是平衡的。

然而一般的treap也要通过旋转保持平衡,但是fhq-treap不需要,这得益于他的两个神奇的核心操作 Merg

评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值