AVL树

✍ dations ◷ 2025-10-19 17:05:54 #树结构

在计算机科学中,AVL树是最早被发明的自平衡二叉查找树。在AVL树中,任一节点对应的两棵子树的最大高度差为1,因此它也被称为高度平衡树。查找、插入和删除在平均和最坏情况下的时间复杂度都是 O ( log n ) {\displaystyle O(\log {n})} 个节点被旋转,而每次AVL旋转耗费固定的时间,所以删除处理在整体上耗费O(log ) 时间。

可以像普通二叉查找树一样的进行,所以耗费O(log )时间,因为AVL树总是保持平衡的。不需要特殊的准备,树的结构不会由于查找而改变。(这是与伸展树搜索相对立的,它会因为搜索而变更树结构。)

假设平衡因子是左子树的高度减去右子树的高度所得到的值,又假设由于在二叉排序树上插入节点而失去平衡的最小子树根节点的指针为a(即a是离插入点最近,且平衡因子绝对值超过1的祖先节点),则失去平衡后进行的规律可归纳为下列四种情况:

在平衡的二叉排序树BBST (Balancing Binary Search Tree)上插入一个新的数据元素e的递归算法可描述如下:

AVL树的调平(Erlang的实现)

 1 balance(null) -> null; 2 balance({null, _, null}=Tree) -> Tree; 3 balance({Left, Value, Right}=Tree) -> 4 	Diff = count(Left)-count(Right), 5 	if (Diff < 2) and (Diff > -2)	->	{balance(Left), Value, balance(Right)}; 6 	   (Diff > 1)				->	balance(rotate_right(Tree)); 7 	   (Diff< -1)				->	balance(rotate_left(Tree)); 8 	   true					->	exit('This is impossible!') 9 	end.10 11 rotate_right({Left, Value, Right}) ->12 	merge_max(Left, {null, Value, Right}).13 14 rotate_left({Left, Value, Right}) ->15 	merge_min(Right, {Left, Value, null}).16 17 merge_min({null, Value, Right}, Tree2) ->18 	{Tree2, Value, Right};19 merge_min({Left, _, _}, Tree2) ->20 	merge_min(Left, Tree2).21 22 merge_max({Left , Value, null}, Tree2) ->23 	{Left, Value, Tree2};24 merge_max({_, _, Right}, Tree2) ->25 	merge_max(Right, Tree2).

AVL节点数计算

高度为h的AVL树,总节点数N最多 2 h 1 {\displaystyle 2^{h}-1} ; 最少节点数 N h {\displaystyle N_{h}} 如以斐波那契数列可以用数学归纳法证明:
N h {\displaystyle N_{h}} = F h + 2 {\displaystyle F_{h+2}} - 1 ( F h + 2 {\displaystyle F_{h+2}} 是斐波那契数列的第h+2项,根据斐波那契多项式得来)。
即:
N 0 {\displaystyle N_{0}} = 0 (表示AVL Tree高度为0的节点总数)
N 1 {\displaystyle N_{1}} = 1 (表示AVL Tree高度为1的节点总数)
N 2 {\displaystyle N_{2}} = 2 (表示AVL Tree高度为2的节点总数)
N h {\displaystyle N_{h}} = N h 1 {\displaystyle N_{h-1}} + N h 2 {\displaystyle N_{h-2}} + 1 (表示AVL Tree高度为h的节点总数)
换句话说,当节点数为N时,高度h最多为 l o g Φ ( 5 ( N + 1 ) ) 2 {\displaystyle log_{\Phi }({\sqrt {5}}*(N+1))-2}

相关

  • FBI联邦调查局(英语:Federal Bureau of Investigation),简称联调局(FBI),前身是调查局(Bureau of Investigation,简称BOI),是美国司法部的主要执法、情报机构及调查单位,也是美国联邦政府最
  • 嫁接嫁接是园艺技术,其中植物的组织被结合以便一起继续其生长。组合植物的上部称为接穗(/ˈsaɪən/),而下部称为砧木。该技术最常用于园艺和农业贸易的商业种植植物无性繁殖。在
  • 颚足纲(Maxillopoda)见内文颚足纲(学名:Maxillopoda)是甲壳动物的一个多样化类别,包括藤壶、桡足类和一些相关的动物。它不是一个单系群,也没有一个任何一个全体共通的特征。颚足纲已被确认并非单系
  • 格拉夫顿奥古斯都·亨利·菲茨罗伊,第三代格拉夫顿公爵(Augustus Henry FitzRoy, 3rd Duke of Grafton 1735年10月1日-1811年3月14日)英国首相(1768~1770),美国独立战争时期的重要人物。查
  • 炼钢厂炼钢厂,是重工业、第二产业、制造业、资本集中型工业、生财工具、固定资产、工厂类型。炼钢厂的原材料是铁矿、煤、炭等,由采矿业供应。由于炼钢厂是战略物资生产,所以中国是国
  • 僧格林沁僧格林沁亲王(蒙古语:.mw-parser-output .font-mong{font-family:"Menk Hawang Tig","Menk Qagan Tig","Menk Garqag Tig","Menk Har_a Tig","Menk Scnin Tig","Oyun Gurban U
  • 勉语勉语,又称瑶语,是苗瑶语系瑶语族唯一的语言。说勉语的人约有150万,自称“勉”、“金门”等等。主要分布在华南(90万)和越南(50万),泰国、老挝、美国(主要是加里福尼亚州)等地也有一定
  • 孽龙洞义龙洞位于江西省萍乡市上栗县清溪,又称“孽龙洞”,是形成于1.8亿年前的天然溶洞,洞长4200余米,旧称孽龙洞,洞内怪石、清风、流泉、飞瀑,被称为洞中“四绝,高九米,宽七米,被地质和园
  • 弱化子弱化子(attenuator,又译衰减子)是指原核生物的操纵子中可以明显衰减乃至终止转录作用的一段核苷酸序列,位于操纵子的上游。在研究大肠杆菌()的色氨酸操纵子表达弱化现象时发现。该
  • 卢乔·达拉卢乔·达拉(Lucio Dalla,1943年3月4日-2012年3月1日),男性,意大利流行乐创作歌手、作曲家、音乐家与演员。卢乔·达拉在1960年代时,深受爵士乐熏陶,蜕变成为具有影响力、且赋有创意