标签:02 关键字 text Splay Treap 莞中 2022 FHQ split
FHQ-Treap
此文章所有代码中的平衡树均为 FHQ-Treap。
FHQ-treap 即非旋Treap,是一种短小精悍,功能丰富的平衡树。
据说它的效率介于 Treap 和 Splay 之间(可能是我的FHQ常数比较小,跑得比我的Treap还快)。
它可以实现 Splay 可以实现的所有功能,包括平衡树的基本操作和区间翻转操作。
它的实现难度比 Splay 要简单很多,没有 Splay 那么多转来转去的操作,不会令人头晕,而且FHQ代码的对称性良好,易于调试。
有两种 FHQ-Treap,一种是按值为关键字的,一种是按下标为关键字的(适用于区间翻转等操作时)。
FHQ-Treap 的核心操作为 \(\text{split}\) (分裂) 和 \(\text{merge}\) (合并)。
\(\text{split}(root,val,x,y)\) 表示将 \(root\) 的子树拆分为两半,一半中的值(或下标)都小于等于 \(val\), 一半的值都大于 \(val\)。
\(\text{merge}(x,y)\) 表示将 \(x\) 子树和 \(y\) 子树合并起来。
具体操作都是依靠 \(\text{split}\) 和 \(\text{merge}\) 来实现的。
按值为关键字时的写法参考 这个博客。
按下标为关键字时的写法可以参考 这个博客。
T1
标签:02,关键字,text,Splay,Treap,莞中,2022,FHQ,split 来源: https://www.cnblogs.com/BorisDimitri/p/16549468.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。