AVL树

✍ dations ◷ 2025-05-19 07:44:45 #树结构

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

相关

  • 发绀发绀(Cyanosis,“绀”音“gàn”),或称紫绀、苍蓝症,是因在接近皮肤表面的血管出现脱氧后的血红蛋白,令皮肤或黏膜带青色的症状。根据Lundsgaard和Van Slyke的著作,当去氧血红素的
  • 绒毛取样术绒毛取样术(Chorionic Villus Sampling, CVS),又称绒毛膜取样术,绒毛活检,抽绒毛,是一种检测染色体异常和遗传性疾病的产前检查的方法。绒毛取样术通过抽取胎盘中的一些细胞样本,并
  • 黄埔黄埔可以指:
  • 自由变异自由变异(free variation、自由变体)在语言学上是指两个(或多个)有所差异的语音或语词出现在相同的情境中、这两者(或多者)又可互相替代使用,而母语的使用者认为这二者(或多者)含有相
  • 美国科学促进会美国科学促进会(英语:American Association for the Advancement of Science,缩写为AAAS),创建于1848年9月20日,是世界最大的非营利科学组织,下设21个专业分会,所涉包括数学、物理学
  • 何育杰何育杰(1882年-1939年1月19日),中国最早期的物理学家,也是教育家。字吟苜,浙江宁波人。1882年,生于慈溪(今宁波市慈城镇)。其父何麟祥,光绪二年(1876年)中举人,先后任江西省新喻知县,贵溪
  • 八阶六边形镶嵌在几何学中,八阶六边形镶嵌是由六边形组成的双曲面正镶嵌图,每八个六边形共用一个顶点。在施莱夫利符号用{6,8}表示。八阶六边形镶嵌即每个顶点皆为八个六边形的公共顶点,顶点
  • 摩西律法摩西律法(英语:Mosaic law)指的是上帝通过摩西向以色列人(原犹太人)颁布的诫命;在基督教中,简称律法。根据指示的宽泛程度,摩西律法可以指:在少数情况下,摩西律法也可指:
  • 顶级域顶级域(或顶级域名;英语:Top-level Domain;英文缩写:TLD)是互联网DNS等级之中的最高级的域,它保存于DNS根域的名字空间中。顶级域名是域名的最后一个部分,即是域名最后一点之后的字
  • 妇科出血妇科出血(Gynecologic hemorrhage)也称为妇科大出血,是指女性生殖系统的异常出血。出血可能是肉眼可见的,血液从阴道流出,也可能是流到骨盆腔或是形成血肿(英语:hematoma)。女性的月