树堆

✍ dations ◷ 2025-05-19 17:16:35 #树结构

树堆(英语:Treap),是有一个随机附加域满足堆的性质的二叉搜索树,其结构相当于以随机数据插入的二叉搜索树。其基本操作的期望时间复杂度为 O ( log n ) {\displaystyle O(\log {n})} 。相对于其他的平衡二叉搜索树,Treap的特点是实现简单,且能基本实现随机平衡的结构。

Treap=Tree+Heap。Treap本身是一棵二叉搜索树,它的左子树和右子树也分别是一个Treap,和一般的二叉搜索树不同的是,Treap纪录一个额外的数据,就是优先级。Treap在以关键码构成二叉搜索树的同时,还满足堆的性质。Treap维护堆性质的方法用到了旋转,只需要两种旋转,编程复杂度比Splay要小一些。

给节点随机分配一个优先级,先和二叉搜索树的插入一样,先把要插入的点插入到一个叶子上,然后跟维护堆一样,如果当前节点的优先级比根大就旋转,如果当前节点是根的左儿子就右旋如果当前节点是根的右儿子就左旋。

由于旋转是 O ( 1 ) {\displaystyle O(1)} 的,最多进行h次(h是树的高度),插入的复杂度是 O ( h ) {\displaystyle O(h)} 的,在期望情况下 h = O ( log n ) {\displaystyle h=O(\log {n})} ,所以它的期望复杂度是 O ( log n ) {\displaystyle O(\log {n})}

因为Treap满足堆性质,所以只需要把要删除的节点旋转到叶节点上,然后直接删除就可以了。具体的方法就是每次找到优先级最大的儿子,向与其相反的方向旋转,直到那个节点被旋转到了叶节点,然后直接删除。

删除最多进行 O ( h ) {\displaystyle O(h)} 次旋转,期望复杂度是 O ( log n ) {\displaystyle O(\log {n})}

和一般的二叉搜索树一样,但是由于Treap的随机化结构,Treap中查找的期望复杂度是 O ( log n ) {\displaystyle O(\log {n})}

二叉搜索树有一个特性,就是每个子树的形态在优先级唯一确定的情况下都是唯一的,不受其他因素影响,也就是说,左子树的形态与树中大于根节点的值无关,右子树亦然。这是因为Treap满足堆的性质,Treap的根节点是优先级最大的那个节点,考虑它的左子树,树根也是子树里面最大的一点,右子树亦然。所以Treap相当于先把所有节点按照优先级排序,然后插入,实质上就相当于以随机顺序创建的二叉搜索树,只不过它并不需要一次读入所有数据,可以一个一个地插入。而当这个随机顺序确定的时候,这个树是唯一的。因此在给定优先级的情况下,只要是用符合要求的操作,通过任何方式得出的Treap都是一样的,所以不改变优先级的情况下,特殊的操作不会造成Treap结构的退化。而改变优先级可能会使Treap变得不够随机以致退化。

Treap的其它操作的期望复杂度同样是 O ( log n ) {\displaystyle O(\log {n})}

相关

  • 低温发电朗肯循环(英语:Rankine Cycle)也被称为兰金循环,是一种将热能转化为功的热力学循环。郎肯循环从外界吸收热量,将其闭环的工质,通常使用水加热做功。郎肯循环产生世界上90%的电力,包
  • 麦当劳三要素麦当劳三要素(英语:Macdonald triad),也称社会性病态三要素(英语:triad of sociopathy)或杀人三要素(英语:homicidal triad)是指一个犯罪心理学理论——虐待动物、纵火癖、(超过一定年
  • 芦竹五福宫五福宫,旧称玄坛庙或元坛庙,俗称南崁五福宫、南崁元帅庙,位于台湾桃园市芦竹区五福里虎头山山麓,旧属桃涧堡南崁庙口庄。该庙主祀之玄坛元帅据传是由明郑士兵迎来,创建至今有三百
  • 杜蒙德·于维尔儒勒·塞巴斯蒂安·塞萨尔·迪蒙·迪维尔(法语:Jules Sébastien César Dumont d'Urville,1790年5月23日-1842年5月8日)是法国探险家、语言学家、人类学家、海军少将。他一生探
  • 享元模式享元模式(英语:Flyweight Pattern)是一种软件设计模式。它使用共享物件,用来尽可能减少内存使用量以及分享资讯给尽可能多的相似物件;它适合用于当大量物件只是重复因而导致无法
  • 维新三杰维新三杰是指日本明治维新时期的三位维新派代表人物。他们是:维新派以尊皇攘夷口号推翻幕府后,建立起新的君主立宪体制,实行三权分立,选举官吏。木户孝允首先担任明治政府的实质
  • 秦澍春秦澍春(1844年-1893年),直隶遵化县人,清朝政治人物、进士出身。同治十三年,登进士,改庶吉士。光绪五年,授翰林院编修。同年改广西学政。光绪十一年,任甘肃学政。光绪十七年,任右庶子、
  • 高翊峰高翊峰(1973年9月10日-),台湾作家、电视编剧、导演。苗栗头份客家人,中国文化大学法律系毕业。曾做过调酒师、舞者、时尚杂志编辑等工作,现任《FHM》杂志国际中文版总编辑。2003年
  • 陈文 (明将领)陈文(1325年-1384年),安徽合肥人,明朝初期军事将领。东海侯。其早年丧父,对母十分孝顺,元末期间带领全家投奔朱元璋,并跟随朱元璋南征北战,升任都督佥事。死时,追封东海侯,谥孝勇。明朝
  • 李进民李进民(1926年-),山东平度人,中国人民解放军将领、中国人民解放军中将。1988年,授予中国人民解放军中将,曾任北京卫戍区政治委员。