This commit is contained in:
krahets
2023-08-19 22:07:27 +08:00
parent 71c7786f51
commit 2e27ad1680
99 changed files with 283 additions and 283 deletions
+5 -5
View File
@@ -2,7 +2,7 @@
comments: true
---
# 7.5.   AVL 树 *
# 7.5   AVL 树 *
在二叉搜索树章节中,我们提到了在多次插入和删除操作后,二叉搜索树可能退化为链表。这种情况下,所有操作的时间复杂度将从 $O(\log n)$ 恶化为 $O(n)$。
@@ -20,7 +20,7 @@ comments: true
G. M. Adelson-Velsky 和 E. M. Landis 在其 1962 年发表的论文 "An algorithm for the organization of information" 中提出了「AVL 树」。论文中详细描述了一系列操作,确保在持续添加和删除节点后,AVL 树不会退化,从而使得各种操作的时间复杂度保持在 $O(\log n)$ 级别。换句话说,在需要频繁进行增删查改操作的场景中,AVL 树能始终保持高效的数据操作性能,具有很好的应用价值。
## 7.5.1.   AVL 树常见术语
## 7.5.1   AVL 树常见术语
「AVL 树」既是二叉搜索树也是平衡二叉树,同时满足这两类二叉树的所有性质,因此也被称为「平衡二叉搜索树」。
@@ -580,7 +580,7 @@ G. M. Adelson-Velsky 和 E. M. Landis 在其 1962 年发表的论文 "An algorit
设平衡因子为 $f$ ,则一棵 AVL 树的任意节点的平衡因子皆满足 $-1 \le f \le 1$ 。
## 7.5.2.   AVL 树旋转
## 7.5.2   AVL 树旋转
AVL 树的特点在于「旋转 Rotation」操作,它能够在不影响二叉树的中序遍历序列的前提下,使失衡节点重新恢复平衡。换句话说,**旋转操作既能保持树的「二叉搜索树」属性,也能使树重新变为「平衡二叉树」**。
@@ -1519,7 +1519,7 @@ AVL 树的特点在于「旋转 Rotation」操作,它能够在不影响二叉
}
```
## 7.5.3.   AVL 树常用操作
## 7.5.3   AVL 树常用操作
### 插入节点
@@ -2436,7 +2436,7 @@ AVL 树的特点在于「旋转 Rotation」操作,它能够在不影响二叉
AVL 树的节点查找操作与二叉搜索树一致,在此不再赘述。
## 7.5.4.   AVL 树典型应用
## 7.5.4   AVL 树典型应用
- 组织和存储大型数据,适用于高频查找、低频增删的场景。
- 用于构建数据库中的索引系统。