树堆

✍ dations ◷ 2025-04-26 12:37:19 #树结构

树堆(英语: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})}

相关

  • 丛林肉丛林肉(英语:Bushmeat),是指各种从栖身于非洲和亚洲地区的野生动物身上所获取的食用肉,即中国人所指的野味。现今,丛林肉更多地指从栖身于非洲大陆中、西部或更广阔地区的动物身上
  • 稳定稳定同位素(Stable isotope),是指化学元素中,不发生放射性衰变或不易发生放射性衰变的同位素,稳定同位素即使会发生衰变,因半衰期太长而无法测量出。所有同位素中,只有前66个元素中
  • 华法令华法林(英语:Warfarin,又名华法令、可迈丁或灭鼠灵)是一种只可口服的抗凝血素,学名为苄丙酮香豆素,一般都以苄丙酮香豆素钠来储存及处方,较著名的品牌有Coumadin®。由于其化学结构
  • 柏油脚跟北卡罗来纳大学柏油脚跟队(英语:North Carolina Tar Heels)代表北卡罗来纳大学教堂山分校参加国家大学体育协会(NCAA)第一级别的多项体育赛事,属于大西洋沿岸联盟的成员。其名称柏
  • 幕府 (日本)幕府(日语:幕府/ばくふ  */?)是指日本历史上由征夷大将军(俗称幕府将军,简称将军)领导与统治的武家政权,为日本特有国情下所产生的的政治体制,从1185年源平合战结束时开始,至1867年
  • 小唐纳德·特朗普小唐纳德·约翰·“唐”·特朗普(英语:Donald John "Don" Trump Jr.,1977年12月31日-)是美国的一位企业家及前电视名人,唐纳德·特朗普和首任妻子伊凡娜·特朗普的长子。他现在与
  • 奥古斯图夫奥古斯图夫(Augustów,立陶宛语:Augustavas)是位于波兰东北部的城市。1995年,有人口29,600人。自1999年起,属波德拉谢省。在1975年至1998年期间,属苏瓦乌基省。在1970年,奥古斯图夫
  • 塞浦路斯国旗塞浦路斯国旗(希腊语:Σημαία της Κύπρου;土耳其语:Güney Kıbrıs Rum Kesimi Bayrağı)是一面由铜色塞浦路斯岛地形图、橄榄枝和白色的背景组成的旗帜。1960年
  • 安里积千代安里积千代(1903年8月22日-1986年9月30日),出生于日本冲绳县座间味村的日本政治家,曾担任美国治理琉球时期八重山群岛政府知事,琉球政府立法院议员,以及日本众议院议员。。泉有平(19
  • 瑟丽塔·伊班克斯瑟丽塔·伊班克斯(英语:Selita Ebanks,1983年2月15日-)出生于英属开曼群岛大开曼,为美国著名模特儿。 1983年,伊班克斯出生在英属开曼群岛大开曼,她具有爱尔兰和非洲血统,伊班克斯的