AVL树

✍ dations ◷ 2024-12-21 22:35:56 #树结构

在计算机科学中,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}

相关

  • 转化生长因子β乙型转化生长因子(Transforming Growth Factor Beta, TGF-β)是存在于每个人体内的免疫调节因子,帮助改善过敏体质、调节免疫系统正常发展。TGF-β有三种异构物,其中‘TGF-β2’
  • 橙花苦橙(学名:Citrus × aurantium),又称酸橙、塞维利亚柑橘,是柚(Citrus maxima)与橘(Citrus reticulata)的杂交种,属芸香科柑橘属植物。栽培品种玳玳花(Citrus × aurantium Amara)开白花
  • 宙斯宙斯(古希腊语:Ζεύς,Zeús,希腊语:Δίας,Días,拉丁语:Zeus)是古希腊神话中统领宇宙的至高无上的天神,旧译丢斯。罗马神话称朱庇特(拉丁语:Jupiter),是木星的名字起源。祂是克罗诺
  • 波音737波音737是一款中短程/双发动机窄体喷气客机,原本是波音707和波音727的衍生机型,为一款低操作成本的短程民用飞机,至今发展出14个型号。2019年,由于受737MAX停飞以及波音737NG停
  • 澳大利亚大陆板块坐标:26°S 141°E / 26°S 141°E / -26; 141澳大利亚城市人口列表巴布亚新几内亚城镇列表(英语:List of cities and towns in Papua New Guinea by population)澳大利亚洲又叫
  • 1290年直隶地震1290年直隶地震,发生于1290年(元至元二十七年)9月27日,震中位于元代直隶武平路(今内蒙古宁城县)。此次面波震级估计为6.8Ms,此次地震的麦加利地震烈度为IX。据《元史·赵孟
  • 科博馆国立自然科学博物馆,简称科博馆,是位于台湾台中市北区的公立科学博物馆,是中华民国国家十二项建设文化建设项下兴建的首座科学博物馆。该馆馆区由科学中心、太空剧场、生命科学
  • 中国历年节育手术表本表列出中国大陆历年卫生统计数据中的节育手术例数。数据来源:《2013中国卫生和计划生育统计年鉴》表8-8-1。历年《中国人口和就业统计年鉴》公布的计划生育统计数据,与上表
  • 大环化合物大环化合物(英语:Macrocycle)指环里有12个或以上成员环的有机化合物,常见例子有卟啉、冠醚以及环糊精和杯芳烃等。大环化合物表示大的化学成熟区。
  • 戴宏杰戴宏杰(1966年5月2日-),美国华人化学家和应用物理学家,斯坦福大学化学系教授。在碳纳米管领域是领军人物。曾经被《科学观察》杂志评选为世界前一百位化学家。1989年毕业于清华大