平衡树

✍ dations ◷ 2025-11-20 07:37:03 #数据结构,树结构

平衡树是计算机科学中的一类数据结构,为改进的二叉查找树。一般的二叉查找树的查询复杂度取决于目标结点到树根的距离(即深度),因此当结点的深度普遍较大时,查询的均摊复杂度会上升。为了实现更高效的查询,产生了平衡树。

在这里,平衡指所有叶子的深度趋于平衡,更广义的是指在树上所有可能查找的均摊复杂度偏低。

旋转(Rotate):几乎所有平衡树的操作都基于树旋转操作(也有部分基于重构,如替罪羊树),通过旋转操作可以使得树趋于平衡。对一棵查找树(search tree)进行查询、新增、删除等动作,所花的时间与树的高度h成比例,并不与树的容量 n 成比例。如果可以让树维持平衡,也就是让h维持在 O ( log n ) {\displaystyle O(\log {n})} ,且最大的数。

查询后继(successor):后继定义为大于,且最小的数。

在维护节点大小(size)后,可以支持以下操作:

查询排名(rank):排名定义为比x小的数的个数加一。

查询第k大:即排名为的数。

以下数据结构支持平衡树大多数操作,但实现有根本不同:

用于表示有序的线性数据结构,如优先队列、关联数组、键(key)-值(value)的映射等。自平衡的二叉查找树与哈希表的相比,各有优缺。平衡树在按序遍历所有键值时是量级最优的,哈希表不能。自平衡二叉查找树在查找一个键值时,最坏情况下时间复杂度优于哈希表, O ( log n ) {\displaystyle O(\log n)} 对比 O ( n ) {\displaystyle O(n)} ;但平均时间复杂度逊于hash表, O ( log n ) {\displaystyle O(\log n)} 对比 O ( 1 ) {\displaystyle O(1)}

平衡树的排序方法,虽然在平均时间复杂度上也是 O ( n log n ) {\displaystyle O(n\log n)} ,但由于cache性能、树的调整操作等,性能上不如快速排序、堆排序、归并排序等同为 O ( n log n ) {\displaystyle O(n\log n)} 复杂度的排序。

相关

  • 利比威拉德·弗兰克·利比(英语:Willard Frank Libby,1908年12月17日-1980年9月8日),美国化学家,1960年诺贝尔化学奖得主。利比于1940年代于芝加哥大学发明了放射性碳定年法,该方法对考
  • 汽巴精化汽巴精化(Ciba Specialty Chemicals)是一家总部设在瑞士巴塞尔的精细化工生产商。它在28个国家设有79个分支机构,雇员达19300人并且在12个国家设有24个精细化工相关的研究中心
  • 各加盟共和国国徽苏联加盟共和国国徽具有极大的共通性,都以共产主义的代表符号镰刀锤子和红星作为主要特征,在国徽下部也全部拥有升阳标识(尽管实际上拉脱维亚位于波罗的海之东,可以解释为日落),被
  • 洋基歌《洋基歌》(Yankee Doodle)是一首美国传统歌曲,其起源可追溯至美国七年战争时期。今天这首歌在美国通常被当作爱国歌曲,它同时还是康乃狄克州的州歌。这首歌的真正源头仍不清楚
  • 汉字编码字符集汉字编码字符集,在中文信息处理领域,指按照规则定义的汉字的有序集合。指定字符集中的汉字编码是指汉字在该字符集中对应的字符编码。常见的包含汉字的编码字符集有:
  • 肖肖尼国家森林肖肖尼国家森林(英语:Shoshone National Forest,/ʃoʊˈʃoʊniː/)是美国首个受联邦保护的国家森林,面积约2.5 × 106英亩(10,000平方千米),地处美国怀俄明州。它原先是黄石公园
  • 利奥波德三世 (安哈尔特-德绍)利奥波德·弗里德里希·弗朗茨(Leopold Frederick Franz;1740年8月10日-1817年8月9日),出生于德绍。安哈尔特-德绍亲王和公爵。是安哈尔特-德绍亲王利奥波德二世与安哈尔特-科滕
  • 格里戈里·马尔古利斯格里戈里·亚历山德罗维奇·马尔古利斯(俄语:Григо́рий Алекса́ндрович Маргу́лис,英语:Gregori Aleksandrovich Margulis,1946年2月24日-),俄裔美
  • 截头山蚁属截头山蚁属()为山蚁亚科下的属。该属由Mayr于1861年发表,现存96种,模式物种为 。该属旧时被列为巨山蚁属下的亚种,但2016年时被提升至属。截头山蚁属居住在木头之中,兵蚁头部前侧
  • 快速切换使用者快速用户切换是一些现代的多用户操作系统(如Windows和Mac OS X,Linux)的一个特点。 它可以让PC用户无需退出应用程序或注销帐户就可以进行用户切换。类似的功能首先是由它支持