mirror of
https://github.com/krahets/hello-algo.git
synced 2026-09-03 05:37:13 +00:00
deploy
This commit is contained in:
@@ -25,7 +25,7 @@
|
||||
|
||||
|
||||
|
||||
<title>7.4. AVL 树 * - Hello 算法</title>
|
||||
<title>7.4. AVL 树 * - Hello 算法</title>
|
||||
|
||||
|
||||
|
||||
@@ -111,7 +111,7 @@
|
||||
<div class="md-header__topic" data-md-component="header-topic">
|
||||
<span class="md-ellipsis">
|
||||
|
||||
7.4. AVL 树 *
|
||||
7.4. AVL 树 *
|
||||
|
||||
</span>
|
||||
</div>
|
||||
@@ -268,14 +268,14 @@
|
||||
|
||||
|
||||
<label class="md-nav__link" for="__nav_1" id="__nav_1_label" tabindex="0">
|
||||
0. 写在前面
|
||||
0. 写在前面
|
||||
<span class="md-nav__icon md-icon"></span>
|
||||
</label>
|
||||
|
||||
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_1_label" aria-expanded="false">
|
||||
<label class="md-nav__title" for="__nav_1">
|
||||
<span class="md-nav__icon md-icon"></span>
|
||||
0. 写在前面
|
||||
0. 写在前面
|
||||
</label>
|
||||
<ul class="md-nav__list" data-md-scrollfix>
|
||||
|
||||
@@ -286,7 +286,7 @@
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../chapter_preface/about_the_book/" class="md-nav__link">
|
||||
0.1. 关于本书
|
||||
0.1. 关于本书
|
||||
</a>
|
||||
</li>
|
||||
|
||||
@@ -300,7 +300,7 @@
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../chapter_preface/suggestions/" class="md-nav__link">
|
||||
0.2. 如何使用本书
|
||||
0.2. 如何使用本书
|
||||
</a>
|
||||
</li>
|
||||
|
||||
@@ -314,7 +314,7 @@
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../chapter_preface/installation/" class="md-nav__link">
|
||||
0.3. 编程环境安装
|
||||
0.3. 编程环境安装
|
||||
</a>
|
||||
</li>
|
||||
|
||||
@@ -328,7 +328,7 @@
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../chapter_preface/contribution/" class="md-nav__link">
|
||||
0.4. 一起参与创作
|
||||
0.4. 一起参与创作
|
||||
</a>
|
||||
</li>
|
||||
|
||||
@@ -367,14 +367,14 @@
|
||||
|
||||
|
||||
<label class="md-nav__link" for="__nav_2" id="__nav_2_label" tabindex="0">
|
||||
1. 引言
|
||||
1. 引言
|
||||
<span class="md-nav__icon md-icon"></span>
|
||||
</label>
|
||||
|
||||
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_2_label" aria-expanded="false">
|
||||
<label class="md-nav__title" for="__nav_2">
|
||||
<span class="md-nav__icon md-icon"></span>
|
||||
1. 引言
|
||||
1. 引言
|
||||
</label>
|
||||
<ul class="md-nav__list" data-md-scrollfix>
|
||||
|
||||
@@ -385,7 +385,7 @@
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../chapter_introduction/algorithms_are_everywhere/" class="md-nav__link">
|
||||
1.1. 算法无处不在
|
||||
1.1. 算法无处不在
|
||||
</a>
|
||||
</li>
|
||||
|
||||
@@ -399,7 +399,7 @@
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../chapter_introduction/what_is_dsa/" class="md-nav__link">
|
||||
1.2. 算法是什么
|
||||
1.2. 算法是什么
|
||||
</a>
|
||||
</li>
|
||||
|
||||
@@ -444,14 +444,14 @@
|
||||
|
||||
|
||||
<label class="md-nav__link" for="__nav_3" id="__nav_3_label" tabindex="0">
|
||||
2. 计算复杂度
|
||||
2. 计算复杂度
|
||||
<span class="md-nav__icon md-icon"></span>
|
||||
</label>
|
||||
|
||||
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_3_label" aria-expanded="false">
|
||||
<label class="md-nav__title" for="__nav_3">
|
||||
<span class="md-nav__icon md-icon"></span>
|
||||
2. 计算复杂度
|
||||
2. 计算复杂度
|
||||
</label>
|
||||
<ul class="md-nav__list" data-md-scrollfix>
|
||||
|
||||
@@ -462,7 +462,7 @@
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../chapter_computational_complexity/performance_evaluation/" class="md-nav__link">
|
||||
2.1. 算法效率评估
|
||||
2.1. 算法效率评估
|
||||
</a>
|
||||
</li>
|
||||
|
||||
@@ -476,7 +476,7 @@
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../chapter_computational_complexity/time_complexity/" class="md-nav__link">
|
||||
2.2. 时间复杂度
|
||||
2.2. 时间复杂度
|
||||
</a>
|
||||
</li>
|
||||
|
||||
@@ -490,7 +490,7 @@
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../chapter_computational_complexity/space_complexity/" class="md-nav__link">
|
||||
2.3. 空间复杂度
|
||||
2.3. 空间复杂度
|
||||
</a>
|
||||
</li>
|
||||
|
||||
@@ -504,7 +504,7 @@
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../chapter_computational_complexity/space_time_tradeoff/" class="md-nav__link">
|
||||
2.4. 权衡时间与空间
|
||||
2.4. 权衡时间与空间
|
||||
</a>
|
||||
</li>
|
||||
|
||||
@@ -518,7 +518,7 @@
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../chapter_computational_complexity/summary/" class="md-nav__link">
|
||||
2.5. 小结
|
||||
2.5. 小结
|
||||
</a>
|
||||
</li>
|
||||
|
||||
@@ -559,14 +559,14 @@
|
||||
|
||||
|
||||
<label class="md-nav__link" for="__nav_4" id="__nav_4_label" tabindex="0">
|
||||
3. 数据结构简介
|
||||
3. 数据结构简介
|
||||
<span class="md-nav__icon md-icon"></span>
|
||||
</label>
|
||||
|
||||
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_4_label" aria-expanded="false">
|
||||
<label class="md-nav__title" for="__nav_4">
|
||||
<span class="md-nav__icon md-icon"></span>
|
||||
3. 数据结构简介
|
||||
3. 数据结构简介
|
||||
</label>
|
||||
<ul class="md-nav__list" data-md-scrollfix>
|
||||
|
||||
@@ -577,7 +577,7 @@
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../chapter_data_structure/data_and_memory/" class="md-nav__link">
|
||||
3.1. 数据与内存
|
||||
3.1. 数据与内存
|
||||
</a>
|
||||
</li>
|
||||
|
||||
@@ -591,7 +591,7 @@
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../chapter_data_structure/classification_of_data_structure/" class="md-nav__link">
|
||||
3.2. 数据结构分类
|
||||
3.2. 数据结构分类
|
||||
</a>
|
||||
</li>
|
||||
|
||||
@@ -605,7 +605,7 @@
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../chapter_data_structure/summary/" class="md-nav__link">
|
||||
3.3. 小结
|
||||
3.3. 小结
|
||||
</a>
|
||||
</li>
|
||||
|
||||
@@ -648,14 +648,14 @@
|
||||
|
||||
|
||||
<label class="md-nav__link" for="__nav_5" id="__nav_5_label" tabindex="0">
|
||||
4. 数组与链表
|
||||
4. 数组与链表
|
||||
<span class="md-nav__icon md-icon"></span>
|
||||
</label>
|
||||
|
||||
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_5_label" aria-expanded="false">
|
||||
<label class="md-nav__title" for="__nav_5">
|
||||
<span class="md-nav__icon md-icon"></span>
|
||||
4. 数组与链表
|
||||
4. 数组与链表
|
||||
</label>
|
||||
<ul class="md-nav__list" data-md-scrollfix>
|
||||
|
||||
@@ -666,7 +666,7 @@
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../chapter_array_and_linkedlist/array/" class="md-nav__link">
|
||||
4.1. 数组(Array)
|
||||
4.1. 数组(Array)
|
||||
</a>
|
||||
</li>
|
||||
|
||||
@@ -680,7 +680,7 @@
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../chapter_array_and_linkedlist/linked_list/" class="md-nav__link">
|
||||
4.2. 链表(LinkedList)
|
||||
4.2. 链表(LinkedList)
|
||||
</a>
|
||||
</li>
|
||||
|
||||
@@ -694,7 +694,7 @@
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../chapter_array_and_linkedlist/list/" class="md-nav__link">
|
||||
4.3. 列表(List)
|
||||
4.3. 列表(List)
|
||||
</a>
|
||||
</li>
|
||||
|
||||
@@ -708,7 +708,7 @@
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../chapter_array_and_linkedlist/summary/" class="md-nav__link">
|
||||
4.4. 小结
|
||||
4.4. 小结
|
||||
</a>
|
||||
</li>
|
||||
|
||||
@@ -751,14 +751,14 @@
|
||||
|
||||
|
||||
<label class="md-nav__link" for="__nav_6" id="__nav_6_label" tabindex="0">
|
||||
5. 栈与队列
|
||||
5. 栈与队列
|
||||
<span class="md-nav__icon md-icon"></span>
|
||||
</label>
|
||||
|
||||
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_6_label" aria-expanded="false">
|
||||
<label class="md-nav__title" for="__nav_6">
|
||||
<span class="md-nav__icon md-icon"></span>
|
||||
5. 栈与队列
|
||||
5. 栈与队列
|
||||
</label>
|
||||
<ul class="md-nav__list" data-md-scrollfix>
|
||||
|
||||
@@ -769,7 +769,7 @@
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../chapter_stack_and_queue/stack/" class="md-nav__link">
|
||||
5.1. 栈(Stack)
|
||||
5.1. 栈(Stack)
|
||||
</a>
|
||||
</li>
|
||||
|
||||
@@ -783,7 +783,7 @@
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../chapter_stack_and_queue/queue/" class="md-nav__link">
|
||||
5.2. 队列(Queue)
|
||||
5.2. 队列(Queue)
|
||||
</a>
|
||||
</li>
|
||||
|
||||
@@ -797,7 +797,7 @@
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../chapter_stack_and_queue/deque/" class="md-nav__link">
|
||||
5.3. 双向队列(Deque)
|
||||
5.3. 双向队列(Deque)
|
||||
</a>
|
||||
</li>
|
||||
|
||||
@@ -811,7 +811,7 @@
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../chapter_stack_and_queue/summary/" class="md-nav__link">
|
||||
5.4. 小结
|
||||
5.4. 小结
|
||||
</a>
|
||||
</li>
|
||||
|
||||
@@ -852,14 +852,14 @@
|
||||
|
||||
|
||||
<label class="md-nav__link" for="__nav_7" id="__nav_7_label" tabindex="0">
|
||||
6. 散列表
|
||||
6. 散列表
|
||||
<span class="md-nav__icon md-icon"></span>
|
||||
</label>
|
||||
|
||||
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_7_label" aria-expanded="false">
|
||||
<label class="md-nav__title" for="__nav_7">
|
||||
<span class="md-nav__icon md-icon"></span>
|
||||
6. 散列表
|
||||
6. 散列表
|
||||
</label>
|
||||
<ul class="md-nav__list" data-md-scrollfix>
|
||||
|
||||
@@ -870,7 +870,7 @@
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../chapter_hashing/hash_map/" class="md-nav__link">
|
||||
6.1. 哈希表(HashMap)
|
||||
6.1. 哈希表(HashMap)
|
||||
</a>
|
||||
</li>
|
||||
|
||||
@@ -884,7 +884,7 @@
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../chapter_hashing/hash_collision/" class="md-nav__link">
|
||||
6.2. 哈希冲突处理
|
||||
6.2. 哈希冲突处理
|
||||
</a>
|
||||
</li>
|
||||
|
||||
@@ -898,7 +898,7 @@
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../chapter_hashing/summary/" class="md-nav__link">
|
||||
6.3. 小结
|
||||
6.3. 小结
|
||||
</a>
|
||||
</li>
|
||||
|
||||
@@ -945,14 +945,14 @@
|
||||
|
||||
|
||||
<label class="md-nav__link" for="__nav_8" id="__nav_8_label" tabindex="0">
|
||||
7. 二叉树
|
||||
7. 二叉树
|
||||
<span class="md-nav__icon md-icon"></span>
|
||||
</label>
|
||||
|
||||
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_8_label" aria-expanded="true">
|
||||
<label class="md-nav__title" for="__nav_8">
|
||||
<span class="md-nav__icon md-icon"></span>
|
||||
7. 二叉树
|
||||
7. 二叉树
|
||||
</label>
|
||||
<ul class="md-nav__list" data-md-scrollfix>
|
||||
|
||||
@@ -963,7 +963,7 @@
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../binary_tree/" class="md-nav__link">
|
||||
7.1. 二叉树(Binary Tree)
|
||||
7.1. 二叉树(Binary Tree)
|
||||
</a>
|
||||
</li>
|
||||
|
||||
@@ -977,7 +977,7 @@
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../binary_tree_traversal/" class="md-nav__link">
|
||||
7.2. 二叉树遍历
|
||||
7.2. 二叉树遍历
|
||||
</a>
|
||||
</li>
|
||||
|
||||
@@ -991,7 +991,7 @@
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../binary_search_tree/" class="md-nav__link">
|
||||
7.3. 二叉搜索树
|
||||
7.3. 二叉搜索树
|
||||
</a>
|
||||
</li>
|
||||
|
||||
@@ -1014,12 +1014,12 @@
|
||||
|
||||
|
||||
<label class="md-nav__link md-nav__link--active" for="__toc">
|
||||
7.4. AVL 树 *
|
||||
7.4. AVL 树 *
|
||||
<span class="md-nav__icon md-icon"></span>
|
||||
</label>
|
||||
|
||||
<a href="./" class="md-nav__link md-nav__link--active">
|
||||
7.4. AVL 树 *
|
||||
7.4. AVL 树 *
|
||||
</a>
|
||||
|
||||
|
||||
@@ -1039,10 +1039,10 @@
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="#741-avl" class="md-nav__link">
|
||||
7.4.1. AVL 树常见术语
|
||||
7.4.1. AVL 树常见术语
|
||||
</a>
|
||||
|
||||
<nav class="md-nav" aria-label="7.4.1. AVL 树常见术语">
|
||||
<nav class="md-nav" aria-label="7.4.1. AVL 树常见术语">
|
||||
<ul class="md-nav__list">
|
||||
|
||||
<li class="md-nav__item">
|
||||
@@ -1066,10 +1066,10 @@
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="#742-avl" class="md-nav__link">
|
||||
7.4.2. AVL 树旋转
|
||||
7.4.2. AVL 树旋转
|
||||
</a>
|
||||
|
||||
<nav class="md-nav" aria-label="7.4.2. AVL 树旋转">
|
||||
<nav class="md-nav" aria-label="7.4.2. AVL 树旋转">
|
||||
<ul class="md-nav__list">
|
||||
|
||||
<li class="md-nav__item">
|
||||
@@ -1114,10 +1114,10 @@
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="#743-avl" class="md-nav__link">
|
||||
7.4.3. AVL 树常用操作
|
||||
7.4.3. AVL 树常用操作
|
||||
</a>
|
||||
|
||||
<nav class="md-nav" aria-label="7.4.3. AVL 树常用操作">
|
||||
<nav class="md-nav" aria-label="7.4.3. AVL 树常用操作">
|
||||
<ul class="md-nav__list">
|
||||
|
||||
<li class="md-nav__item">
|
||||
@@ -1148,7 +1148,7 @@
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="#744-avl" class="md-nav__link">
|
||||
7.4.4. AVL 树典型应用
|
||||
7.4.4. AVL 树典型应用
|
||||
</a>
|
||||
|
||||
</li>
|
||||
@@ -1169,7 +1169,7 @@
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../summary/" class="md-nav__link">
|
||||
7.5. 小结
|
||||
7.5. 小结
|
||||
</a>
|
||||
</li>
|
||||
|
||||
@@ -1206,14 +1206,14 @@
|
||||
|
||||
|
||||
<label class="md-nav__link" for="__nav_9" id="__nav_9_label" tabindex="0">
|
||||
8. 堆
|
||||
8. 堆
|
||||
<span class="md-nav__icon md-icon"></span>
|
||||
</label>
|
||||
|
||||
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_9_label" aria-expanded="false">
|
||||
<label class="md-nav__title" for="__nav_9">
|
||||
<span class="md-nav__icon md-icon"></span>
|
||||
8. 堆
|
||||
8. 堆
|
||||
</label>
|
||||
<ul class="md-nav__list" data-md-scrollfix>
|
||||
|
||||
@@ -1224,7 +1224,7 @@
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../chapter_heap/heap/" class="md-nav__link">
|
||||
8.1. 堆(Heap)
|
||||
8.1. 堆(Heap)
|
||||
</a>
|
||||
</li>
|
||||
|
||||
@@ -1265,14 +1265,14 @@
|
||||
|
||||
|
||||
<label class="md-nav__link" for="__nav_10" id="__nav_10_label" tabindex="0">
|
||||
9. 图
|
||||
9. 图
|
||||
<span class="md-nav__icon md-icon"></span>
|
||||
</label>
|
||||
|
||||
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_10_label" aria-expanded="false">
|
||||
<label class="md-nav__title" for="__nav_10">
|
||||
<span class="md-nav__icon md-icon"></span>
|
||||
9. 图
|
||||
9. 图
|
||||
</label>
|
||||
<ul class="md-nav__list" data-md-scrollfix>
|
||||
|
||||
@@ -1283,7 +1283,7 @@
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../chapter_graph/graph/" class="md-nav__link">
|
||||
9.1. 图(Graph)
|
||||
9.1. 图(Graph)
|
||||
</a>
|
||||
</li>
|
||||
|
||||
@@ -1297,7 +1297,7 @@
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../chapter_graph/graph_operations/" class="md-nav__link">
|
||||
9.2. 图基础操作
|
||||
9.2. 图基础操作
|
||||
</a>
|
||||
</li>
|
||||
|
||||
@@ -1311,7 +1311,7 @@
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../chapter_graph/graph_traversal/" class="md-nav__link">
|
||||
9.3. 图的遍历
|
||||
9.3. 图的遍历
|
||||
</a>
|
||||
</li>
|
||||
|
||||
@@ -1354,14 +1354,14 @@
|
||||
|
||||
|
||||
<label class="md-nav__link" for="__nav_11" id="__nav_11_label" tabindex="0">
|
||||
10. 查找算法
|
||||
10. 查找算法
|
||||
<span class="md-nav__icon md-icon"></span>
|
||||
</label>
|
||||
|
||||
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_11_label" aria-expanded="false">
|
||||
<label class="md-nav__title" for="__nav_11">
|
||||
<span class="md-nav__icon md-icon"></span>
|
||||
10. 查找算法
|
||||
10. 查找算法
|
||||
</label>
|
||||
<ul class="md-nav__list" data-md-scrollfix>
|
||||
|
||||
@@ -1372,7 +1372,7 @@
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../chapter_searching/linear_search/" class="md-nav__link">
|
||||
10.1. 线性查找
|
||||
10.1. 线性查找
|
||||
</a>
|
||||
</li>
|
||||
|
||||
@@ -1386,7 +1386,7 @@
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../chapter_searching/binary_search/" class="md-nav__link">
|
||||
10.2. 二分查找
|
||||
10.2. 二分查找
|
||||
</a>
|
||||
</li>
|
||||
|
||||
@@ -1400,7 +1400,7 @@
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../chapter_searching/hashing_search/" class="md-nav__link">
|
||||
10.3. 哈希查找
|
||||
10.3. 哈希查找
|
||||
</a>
|
||||
</li>
|
||||
|
||||
@@ -1414,7 +1414,7 @@
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../chapter_searching/summary/" class="md-nav__link">
|
||||
10.4. 小结
|
||||
10.4. 小结
|
||||
</a>
|
||||
</li>
|
||||
|
||||
@@ -1461,14 +1461,14 @@
|
||||
|
||||
|
||||
<label class="md-nav__link" for="__nav_12" id="__nav_12_label" tabindex="0">
|
||||
11. 排序算法
|
||||
11. 排序算法
|
||||
<span class="md-nav__icon md-icon"></span>
|
||||
</label>
|
||||
|
||||
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_12_label" aria-expanded="false">
|
||||
<label class="md-nav__title" for="__nav_12">
|
||||
<span class="md-nav__icon md-icon"></span>
|
||||
11. 排序算法
|
||||
11. 排序算法
|
||||
</label>
|
||||
<ul class="md-nav__list" data-md-scrollfix>
|
||||
|
||||
@@ -1479,7 +1479,7 @@
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../chapter_sorting/intro_to_sort/" class="md-nav__link">
|
||||
11.1. 排序简介
|
||||
11.1. 排序简介
|
||||
</a>
|
||||
</li>
|
||||
|
||||
@@ -1493,7 +1493,7 @@
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../chapter_sorting/bubble_sort/" class="md-nav__link">
|
||||
11.2. 冒泡排序
|
||||
11.2. 冒泡排序
|
||||
</a>
|
||||
</li>
|
||||
|
||||
@@ -1507,7 +1507,7 @@
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../chapter_sorting/insertion_sort/" class="md-nav__link">
|
||||
11.3. 插入排序
|
||||
11.3. 插入排序
|
||||
</a>
|
||||
</li>
|
||||
|
||||
@@ -1521,7 +1521,7 @@
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../chapter_sorting/quick_sort/" class="md-nav__link">
|
||||
11.4. 快速排序
|
||||
11.4. 快速排序
|
||||
</a>
|
||||
</li>
|
||||
|
||||
@@ -1535,7 +1535,7 @@
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../chapter_sorting/merge_sort/" class="md-nav__link">
|
||||
11.5. 归并排序
|
||||
11.5. 归并排序
|
||||
</a>
|
||||
</li>
|
||||
|
||||
@@ -1549,7 +1549,7 @@
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../chapter_sorting/summary/" class="md-nav__link">
|
||||
11.6. 小结
|
||||
11.6. 小结
|
||||
</a>
|
||||
</li>
|
||||
|
||||
@@ -1637,10 +1637,10 @@
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="#741-avl" class="md-nav__link">
|
||||
7.4.1. AVL 树常见术语
|
||||
7.4.1. AVL 树常见术语
|
||||
</a>
|
||||
|
||||
<nav class="md-nav" aria-label="7.4.1. AVL 树常见术语">
|
||||
<nav class="md-nav" aria-label="7.4.1. AVL 树常见术语">
|
||||
<ul class="md-nav__list">
|
||||
|
||||
<li class="md-nav__item">
|
||||
@@ -1664,10 +1664,10 @@
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="#742-avl" class="md-nav__link">
|
||||
7.4.2. AVL 树旋转
|
||||
7.4.2. AVL 树旋转
|
||||
</a>
|
||||
|
||||
<nav class="md-nav" aria-label="7.4.2. AVL 树旋转">
|
||||
<nav class="md-nav" aria-label="7.4.2. AVL 树旋转">
|
||||
<ul class="md-nav__list">
|
||||
|
||||
<li class="md-nav__item">
|
||||
@@ -1712,10 +1712,10 @@
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="#743-avl" class="md-nav__link">
|
||||
7.4.3. AVL 树常用操作
|
||||
7.4.3. AVL 树常用操作
|
||||
</a>
|
||||
|
||||
<nav class="md-nav" aria-label="7.4.3. AVL 树常用操作">
|
||||
<nav class="md-nav" aria-label="7.4.3. AVL 树常用操作">
|
||||
<ul class="md-nav__list">
|
||||
|
||||
<li class="md-nav__item">
|
||||
@@ -1746,7 +1746,7 @@
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="#744-avl" class="md-nav__link">
|
||||
7.4.4. AVL 树典型应用
|
||||
7.4.4. AVL 树典型应用
|
||||
</a>
|
||||
|
||||
</li>
|
||||
@@ -1775,7 +1775,7 @@
|
||||
|
||||
|
||||
|
||||
<h1 id="74-avl">7.4. AVL 树 *<a class="headerlink" href="#74-avl" title="Permanent link">¶</a></h1>
|
||||
<h1 id="74-avl">7.4. AVL 树 *<a class="headerlink" href="#74-avl" title="Permanent link">¶</a></h1>
|
||||
<p>在「二叉搜索树」章节中提到,在进行多次插入与删除操作后,二叉搜索树可能会退化为链表。此时所有操作的时间复杂度都会由 <span class="arithmatex">\(O(\log n)\)</span> 劣化至 <span class="arithmatex">\(O(n)\)</span> 。</p>
|
||||
<p>如下图所示,执行两步删除结点后,该二叉搜索树就会退化为链表。</p>
|
||||
<p><img alt="degradation_from_removing_node" src="../avl_tree.assets/degradation_from_removing_node.png" /></p>
|
||||
@@ -1783,7 +1783,7 @@
|
||||
<p><img alt="degradation_from_inserting_node" src="../avl_tree.assets/degradation_from_inserting_node.png" /></p>
|
||||
<p>G. M. Adelson-Velsky 和 E. M. Landis 在其 1962 年发表的论文 "An algorithm for the organization of information" 中提出了「AVL 树」。<strong>论文中描述了一系列操作,使得在不断添加与删除结点后,AVL 树仍然不会发生退化</strong>,进而使得各种操作的时间复杂度均能保持在 <span class="arithmatex">\(O(\log n)\)</span> 级别。</p>
|
||||
<p>换言之,在频繁增删查改的使用场景中,AVL 树可始终保持很高的数据增删查改效率,具有很好的应用价值。</p>
|
||||
<h2 id="741-avl">7.4.1. AVL 树常见术语<a class="headerlink" href="#741-avl" title="Permanent link">¶</a></h2>
|
||||
<h2 id="741-avl">7.4.1. AVL 树常见术语<a class="headerlink" href="#741-avl" title="Permanent link">¶</a></h2>
|
||||
<p>「AVL 树」既是「二叉搜索树」又是「平衡二叉树」,同时满足这两种二叉树的所有性质,因此又被称为「平衡二叉搜索树」。</p>
|
||||
<h3 id="_1">结点高度<a class="headerlink" href="#_1" title="Permanent link">¶</a></h3>
|
||||
<p>在 AVL 树的操作中,需要获取结点「高度 Height」,所以给 AVL 树的结点类添加 <code>height</code> 变量。</p>
|
||||
@@ -2154,7 +2154,7 @@
|
||||
<p class="admonition-title">Note</p>
|
||||
<p>设平衡因子为 <span class="arithmatex">\(f\)</span> ,则一棵 AVL 树的任意结点的平衡因子皆满足 <span class="arithmatex">\(-1 \le f \le 1\)</span> 。</p>
|
||||
</div>
|
||||
<h2 id="742-avl">7.4.2. AVL 树旋转<a class="headerlink" href="#742-avl" title="Permanent link">¶</a></h2>
|
||||
<h2 id="742-avl">7.4.2. AVL 树旋转<a class="headerlink" href="#742-avl" title="Permanent link">¶</a></h2>
|
||||
<p>AVL 树的独特之处在于「旋转 Rotation」的操作,其可 <strong>在不影响二叉树中序遍历序列的前提下,使失衡结点重新恢复平衡</strong>。换言之,旋转操作既可以使树保持为「二叉搜索树」,也可以使树重新恢复为「平衡二叉树」。</p>
|
||||
<p>我们将平衡因子的绝对值 <span class="arithmatex">\(> 1\)</span> 的结点称为「失衡结点」。根据结点的失衡情况,旋转操作分为 <strong>右旋、左旋、先右旋后左旋、先左旋后右旋</strong>,接下来我们来一起来看看它们是如何操作的。</p>
|
||||
<h3 id="case-1-">Case 1 - 右旋<a class="headerlink" href="#case-1-" title="Permanent link">¶</a></h3>
|
||||
@@ -2833,7 +2833,7 @@
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<h2 id="743-avl">7.4.3. AVL 树常用操作<a class="headerlink" href="#743-avl" title="Permanent link">¶</a></h2>
|
||||
<h2 id="743-avl">7.4.3. AVL 树常用操作<a class="headerlink" href="#743-avl" title="Permanent link">¶</a></h2>
|
||||
<h3 id="_4">插入结点<a class="headerlink" href="#_4" title="Permanent link">¶</a></h3>
|
||||
<p>「AVL 树」的结点插入操作与「二叉搜索树」主体类似。不同的是,在插入结点后,从该结点到根结点的路径上会出现一系列「失衡结点」。所以,<strong>我们需要从该结点开始,从底至顶地执行旋转操作,使所有失衡结点恢复平衡</strong>。</p>
|
||||
<div class="tabbed-set tabbed-alternate" data-tabs="8:10"><input checked="checked" id="__tabbed_8_1" name="__tabbed_8" type="radio" /><input id="__tabbed_8_2" name="__tabbed_8" type="radio" /><input id="__tabbed_8_3" name="__tabbed_8" type="radio" /><input id="__tabbed_8_4" name="__tabbed_8" type="radio" /><input id="__tabbed_8_5" name="__tabbed_8" type="radio" /><input id="__tabbed_8_6" name="__tabbed_8" type="radio" /><input id="__tabbed_8_7" name="__tabbed_8" type="radio" /><input id="__tabbed_8_8" name="__tabbed_8" type="radio" /><input id="__tabbed_8_9" name="__tabbed_8" type="radio" /><input id="__tabbed_8_10" name="__tabbed_8" type="radio" /><div class="tabbed-labels"><label for="__tabbed_8_1">Java</label><label for="__tabbed_8_2">C++</label><label for="__tabbed_8_3">Python</label><label for="__tabbed_8_4">Go</label><label for="__tabbed_8_5">JavaScript</label><label for="__tabbed_8_6">TypeScript</label><label for="__tabbed_8_7">C</label><label for="__tabbed_8_8">C#</label><label for="__tabbed_8_9">Swift</label><label for="__tabbed_8_10">Zig</label></div>
|
||||
@@ -3568,7 +3568,7 @@
|
||||
</div>
|
||||
<h3 id="_6">查找结点<a class="headerlink" href="#_6" title="Permanent link">¶</a></h3>
|
||||
<p>「AVL 树」的结点查找操作与「二叉搜索树」一致,在此不再赘述。</p>
|
||||
<h2 id="744-avl">7.4.4. AVL 树典型应用<a class="headerlink" href="#744-avl" title="Permanent link">¶</a></h2>
|
||||
<h2 id="744-avl">7.4.4. AVL 树典型应用<a class="headerlink" href="#744-avl" title="Permanent link">¶</a></h2>
|
||||
<ul>
|
||||
<li>组织存储大型数据,适用于高频查找、低频增删场景;</li>
|
||||
<li>用于建立数据库中的索引系统;</li>
|
||||
@@ -3654,7 +3654,7 @@
|
||||
<nav class="md-footer__inner md-grid" aria-label="页脚" >
|
||||
|
||||
|
||||
<a href="../binary_search_tree/" class="md-footer__link md-footer__link--prev" aria-label="上一页: 7.3. 二叉搜索树" rel="prev">
|
||||
<a href="../binary_search_tree/" class="md-footer__link md-footer__link--prev" aria-label="上一页: 7.3. &nbsp; 二叉搜索树" rel="prev">
|
||||
<div class="md-footer__button md-icon">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11h12Z"/></svg>
|
||||
</div>
|
||||
@@ -3663,20 +3663,20 @@
|
||||
<span class="md-footer__direction">
|
||||
上一页
|
||||
</span>
|
||||
7.3. 二叉搜索树
|
||||
7.3. 二叉搜索树
|
||||
</div>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
|
||||
|
||||
<a href="../summary/" class="md-footer__link md-footer__link--next" aria-label="下一页: 7.5. 小结" rel="next">
|
||||
<a href="../summary/" class="md-footer__link md-footer__link--next" aria-label="下一页: 7.5. &nbsp; 小结" rel="next">
|
||||
<div class="md-footer__title">
|
||||
<div class="md-ellipsis">
|
||||
<span class="md-footer__direction">
|
||||
下一页
|
||||
</span>
|
||||
7.5. 小结
|
||||
7.5. 小结
|
||||
</div>
|
||||
</div>
|
||||
<div class="md-footer__button md-icon">
|
||||
|
||||
Reference in New Issue
Block a user