AVL树

✍ dations ◷ 2025-02-23 10:14:10 #树结构

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

相关

  • 血管性血友病类血友病,温韦伯氏疾病(Von Willebrand disease,简称vWD)、血管性血友病,是人类最常见的遗传性凝血异常疾病,但是也可会在某些情况下得病。致病的原因是缺乏一种血小板凝聚所需要
  • 俄罗斯联邦宪法俄罗斯联邦宪法(俄语:Конституция Российской Федерации, Konstitutsiya Rossiyskoy Federatsii; 发音.mw-parser-output .IPA{font-family:"C
  • 苏俄全俄中央执行委员会全俄苏维埃代表大会(1917–1938)最高苏维埃(1938–1990)俄罗斯苏维埃联邦社会主义共和国(俄语:Российская Советская Федеративн
  • 罗斯福岛坐标:40°45′43″N 73°57′00″W / 40.761927°N 73.950093°W / 40.761927; -73.950093罗斯福岛(英语:Roosevelt Island)是位于美国纽约市东河上的狭长岛屿,介于曼哈顿东侧与
  • 反应过度应激性(英语:irritability)是指在新陈代谢的基础上,生物体对外界刺激都能产生一定的反应。植物的根能够向地生长,是植物对重力的刺激的反应。如果把植物放到失重环境,则根不会出现
  • 王 瑶王瑶(1970年4月-),山东掖县人,生于北京,中华人民共和国摄影家,中国摄影家协会原主席、名誉主席。
  • 董 卿董卿(1973年11月17日-),上海崇明人,生长于安徽濉溪县和浙江嘉兴,中国中央广播电视总台节目主持人、央视节目制作人,以主持大型晚会类节目见长。主持节目有《欢乐中国行》、《魅力中
  • 戈特弗里德·伯姆戈特弗里德·伯姆(Gottfried Böhm;1920年1月23日-),德国建筑师,曾于1986年获颁普利兹克奖。伯姆1920年1月23日诞生于德国奥芬巴赫一个建筑世家。其父多米尼库斯·伯姆(Dominikus B
  • 畅销书列表本列表列出了历史上最畅销的单行本和系列书籍。表中所列的为图书的销售量而非印刷量或目前的拥有量。漫画书和教科书不包含在其中。内容主要有关宗教、意识形态等书籍不纳入
  • .ck.ck为新西兰海外属地库克群岛国家及地区顶级域(ccTLD)的域名。A .ac .ad .ae .af .ag .ai .al .am .ao .aq .ar .as .at .au .aw .ax .az  B .ba .bb .bd .be .bf .bg .bh