AVL树

✍ dations ◷ 2025-11-15 16:40:49 #树结构

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

相关

  • 抓氢键抓氢键(又称agostic键)是一种烷基、烯基、炔基或芳基中的氢与过渡金属间形成的3c2e键。
  • 选址意见书建设项目选址意见书是中国大陆境内进行工程项目建设的一个必须前期程序文件,建设项目选址意见书是城乡规划行政主管部门依法核发的有关建设项目的选址和布局的法律凭证,选址意
  • 胶淋巴系统胶状淋巴系统(又称胶淋巴系统、神经胶细胞类淋巴系统、脑部类淋巴系统,英语:glymphatic system, glymphatic clearance pathway, paravascular system)是脊椎动物中央神经系统中
  • 杜尚别杜尚别(塔吉克斯坦语:Душанбе / Duşanbe)是中亚国家塔吉克斯坦的首都,位于北纬38.5度、东经68.8度,人口在2000年统计约有53万6千人。又译做杜桑贝、杜夏贝、杜山比、杜尚
  • 托莱多翻译院托莱多翻译院(西班牙语:Escuela de Traductores de Toledo)由12世纪到13世纪在西班牙托莱多共同从事翻译工作的学者组成,他们翻译了大量古典阿拉伯语的哲学和科学著作。该学院历
  • 万里区坐标:25°10′52″N 121°41′19″E / 25.181234°N 121.688687°E / 25.181234; 121.688687万里区(官方英译为Wanli,在平埔族巴赛语中称为Masu)是中华民国新北市的一个市辖区,位
  • 天王星行动波罗的海 – 黑海 – 北极 – (跳马 – PQ-17船团 – 仙境)1941年巴巴罗萨 – (比亚韦斯托克及明斯克 – 斯摩棱斯克 – 乌曼 – 列宁格勒 – 第一次基辅 – 塞瓦斯托波尔围
  • 超自然现象超自然(Supernatural)又称灵异现象,包含了超自然现象和超自然力量,即无科学根据而所谓在自然界的力量或现象。一旦超自然能够被证实,则它就不再是超自然了。超自然超出科学的范畴
  • 司州 (北魏)其一是北魏天兴中置,治平城县(今山西大同市东北)。太和中改名恒州。其二是北魏太和十七年(493年)自平成迁都洛阳(今河南洛阳市东北),旧置洛州于洛阳,至是改为司州。辖境相当今河南省
  • 年份列表这个页面索引年相关页面。