浅谈无旋treap(fhq_treap)

无旋Treap(fhq_treap)是一种不使用旋转操作的平衡树,由范浩强提出,具有编程复杂度低、功能强大的特点。它可以替代普通Treap和Splay,并且支持可持久化。本文介绍了无旋Treap与其他平衡树如AVL、普通Treap、Splay和红黑树的比较,强调无旋Treap的易理解和高效。核心操作包括merge和split,这两者使得无旋Treap实现无旋转平衡。文章还提供了一道模板题供读者实践。
摘要由CSDN通过智能技术生成

一、简介

无旋Treap(fhq_treap),是一种不用旋转的treap,其代码复杂度不高,应用范围广(能代替普通treap和splay的所有功能),是一种极其强大的平衡树。

无旋Treap是一个叫做范浩强的大佬发明的(快%啊!)

在我们一起学习无旋Treap之前,本蒟蒻有几句活想说:

1.无旋Treap我个人认为是最容易理解的一种平衡树,而且编程复杂度不高,功能还那么强大。

 我一开始学平衡树的时候是先从普通的带旋转的Treap开始学的。那种Treap,我现在都没搞懂什么左旋右旋究竟是怎么一回事。

 我当时真的以为我这辈子都不指望学会平衡树了,直到djq大佬(快%!)告诉了我这种很美妙的数据结构。

 我真就不明白了,为什么那么多人愿意去学普通的Treap而不学无旋Treap。无旋Treap更容易理解,最主要的是他与普通的Treap相比能可持久化!(尽管我不会

 所以,在大家学习完无旋Treap以后,本蒟蒻请诸君不妨推广一下无旋Treap,造福更多的Oier。

 2.关于无旋Treap和其他平衡树的比较:(这个建议大家学完无旋Treap再来看,可能感触会更深刻一些)

  与AVL相比:旋转操作真的很浪费时间,最坏情况下复杂度为O(log n),而且AVL树难写无比,不适合运用于算法竞赛。

  与普通Treap相比:参见第一条

  与splay相比:基本上可以代替splay的所有功能,但是在处理LCT问题上没有splay优秀

  与rbt(红黑树相比):红黑树特别难写是众所周知的。

  与sbt相比:sbt是我认为的最强大的平衡树。但是无旋Treap中的merge、split操作的应用的广泛(可持久化Treap维护Hash之类的)是sbt做不到的。

二、Treap

  什么是Treap?

  Treap=Tree+heap

  相信大家都知道二叉堆吧。父节点的权值比子节点都要大(或小)

  而Treap,则是在BST(二叉查找树)的基础上,添加二叉堆中的这个元素。

  Treap与heap的区别是,heap是完全二叉树,而Treap不是。

  下面的

三、核心操作

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值