mirror of
https://github.com/krahets/hello-algo.git
synced 2026-07-03 19:25:24 +00:00
deploy
This commit is contained in:
+244
-221
@@ -25,7 +25,7 @@
|
||||
|
||||
|
||||
|
||||
<title>7.4. AVL 树 * - Hello 算法</title>
|
||||
<title>8.4. AVL 树 * - Hello 算法</title>
|
||||
|
||||
|
||||
|
||||
@@ -79,7 +79,7 @@
|
||||
<div data-md-component="skip">
|
||||
|
||||
|
||||
<a href="#74-avl" class="md-skip">
|
||||
<a href="#84-avl" class="md-skip">
|
||||
跳转至
|
||||
</a>
|
||||
|
||||
@@ -113,7 +113,7 @@
|
||||
<div class="md-header__topic" data-md-component="header-topic">
|
||||
<span class="md-ellipsis">
|
||||
|
||||
7.4. AVL 树 *
|
||||
8.4. AVL 树 *
|
||||
|
||||
</span>
|
||||
</div>
|
||||
@@ -441,8 +441,6 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<label class="md-nav__link" for="__nav_3" id="__nav_3_label" tabindex="0">
|
||||
@@ -504,23 +502,9 @@
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../chapter_computational_complexity/space_time_tradeoff/" class="md-nav__link">
|
||||
2.4. 权衡时间与空间
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../chapter_computational_complexity/summary/" class="md-nav__link">
|
||||
2.5. 小结
|
||||
2.4. 小结
|
||||
</a>
|
||||
</li>
|
||||
|
||||
@@ -847,21 +831,76 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<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>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../chapter_binary_search/binary_search/" class="md-nav__link">
|
||||
6.1. 二分查找
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
</ul>
|
||||
</nav>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item md-nav__item--section md-nav__item--nested">
|
||||
|
||||
|
||||
|
||||
|
||||
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_8" >
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<label class="md-nav__link" for="__nav_8" id="__nav_8_label" tabindex="0">
|
||||
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="false">
|
||||
<label class="md-nav__title" for="__nav_8">
|
||||
<span class="md-nav__icon md-icon"></span>
|
||||
7. 散列表
|
||||
</label>
|
||||
<ul class="md-nav__list" data-md-scrollfix>
|
||||
|
||||
@@ -872,7 +911,7 @@
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../chapter_hashing/hash_map/" class="md-nav__link">
|
||||
6.1. 哈希表
|
||||
7.1. 哈希表
|
||||
</a>
|
||||
</li>
|
||||
|
||||
@@ -886,7 +925,7 @@
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../chapter_hashing/hash_collision/" class="md-nav__link">
|
||||
6.2. 哈希冲突处理
|
||||
7.2. 哈希冲突处理
|
||||
</a>
|
||||
</li>
|
||||
|
||||
@@ -900,7 +939,7 @@
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../chapter_hashing/summary/" class="md-nav__link">
|
||||
6.3. 小结
|
||||
7.3. 小结
|
||||
</a>
|
||||
</li>
|
||||
|
||||
@@ -930,7 +969,7 @@
|
||||
|
||||
|
||||
|
||||
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_8" checked>
|
||||
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_9" checked>
|
||||
|
||||
|
||||
|
||||
@@ -946,15 +985,15 @@
|
||||
|
||||
|
||||
|
||||
<label class="md-nav__link" for="__nav_8" id="__nav_8_label" tabindex="0">
|
||||
7. 树
|
||||
<label class="md-nav__link" for="__nav_9" id="__nav_9_label" tabindex="0">
|
||||
8. 树
|
||||
<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">
|
||||
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_9_label" aria-expanded="true">
|
||||
<label class="md-nav__title" for="__nav_9">
|
||||
<span class="md-nav__icon md-icon"></span>
|
||||
7. 树
|
||||
8. 树
|
||||
</label>
|
||||
<ul class="md-nav__list" data-md-scrollfix>
|
||||
|
||||
@@ -965,7 +1004,7 @@
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../binary_tree/" class="md-nav__link">
|
||||
7.1. 二叉树
|
||||
8.1. 二叉树
|
||||
</a>
|
||||
</li>
|
||||
|
||||
@@ -979,7 +1018,7 @@
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../binary_tree_traversal/" class="md-nav__link">
|
||||
7.2. 二叉树遍历
|
||||
8.2. 二叉树遍历
|
||||
</a>
|
||||
</li>
|
||||
|
||||
@@ -993,7 +1032,7 @@
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../binary_search_tree/" class="md-nav__link">
|
||||
7.3. 二叉搜索树
|
||||
8.3. 二叉搜索树
|
||||
</a>
|
||||
</li>
|
||||
|
||||
@@ -1016,12 +1055,12 @@
|
||||
|
||||
|
||||
<label class="md-nav__link md-nav__link--active" for="__toc">
|
||||
7.4. AVL 树 *
|
||||
8.4. AVL 树 *
|
||||
<span class="md-nav__icon md-icon"></span>
|
||||
</label>
|
||||
|
||||
<a href="./" class="md-nav__link md-nav__link--active">
|
||||
7.4. AVL 树 *
|
||||
8.4. AVL 树 *
|
||||
</a>
|
||||
|
||||
|
||||
@@ -1040,11 +1079,11 @@
|
||||
<ul class="md-nav__list" data-md-component="toc" data-md-scrollfix>
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="#741-avl" class="md-nav__link">
|
||||
7.4.1. AVL 树常见术语
|
||||
<a href="#841-avl" class="md-nav__link">
|
||||
8.4.1. AVL 树常见术语
|
||||
</a>
|
||||
|
||||
<nav class="md-nav" aria-label="7.4.1. AVL 树常见术语">
|
||||
<nav class="md-nav" aria-label="8.4.1. AVL 树常见术语">
|
||||
<ul class="md-nav__list">
|
||||
|
||||
<li class="md-nav__item">
|
||||
@@ -1067,11 +1106,11 @@
|
||||
</li>
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="#742-avl" class="md-nav__link">
|
||||
7.4.2. AVL 树旋转
|
||||
<a href="#842-avl" class="md-nav__link">
|
||||
8.4.2. AVL 树旋转
|
||||
</a>
|
||||
|
||||
<nav class="md-nav" aria-label="7.4.2. AVL 树旋转">
|
||||
<nav class="md-nav" aria-label="8.4.2. AVL 树旋转">
|
||||
<ul class="md-nav__list">
|
||||
|
||||
<li class="md-nav__item">
|
||||
@@ -1115,11 +1154,11 @@
|
||||
</li>
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="#743-avl" class="md-nav__link">
|
||||
7.4.3. AVL 树常用操作
|
||||
<a href="#843-avl" class="md-nav__link">
|
||||
8.4.3. AVL 树常用操作
|
||||
</a>
|
||||
|
||||
<nav class="md-nav" aria-label="7.4.3. AVL 树常用操作">
|
||||
<nav class="md-nav" aria-label="8.4.3. AVL 树常用操作">
|
||||
<ul class="md-nav__list">
|
||||
|
||||
<li class="md-nav__item">
|
||||
@@ -1149,8 +1188,8 @@
|
||||
</li>
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="#744-avl" class="md-nav__link">
|
||||
7.4.4. AVL 树典型应用
|
||||
<a href="#844-avl" class="md-nav__link">
|
||||
8.4.4. AVL 树典型应用
|
||||
</a>
|
||||
|
||||
</li>
|
||||
@@ -1171,94 +1210,7 @@
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../summary/" class="md-nav__link">
|
||||
7.5. 小结
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
</ul>
|
||||
</nav>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item md-nav__item--section md-nav__item--nested">
|
||||
|
||||
|
||||
|
||||
|
||||
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_9" >
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<label class="md-nav__link" for="__nav_9" id="__nav_9_label" tabindex="0">
|
||||
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. 堆
|
||||
</label>
|
||||
<ul class="md-nav__list" data-md-scrollfix>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../chapter_heap/heap/" class="md-nav__link">
|
||||
8.1. 堆
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../chapter_heap/build_heap/" class="md-nav__link">
|
||||
8.2. 建堆操作 *
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../chapter_heap/summary/" class="md-nav__link">
|
||||
8.3. 小结
|
||||
8.5. 小结
|
||||
</a>
|
||||
</li>
|
||||
|
||||
@@ -1296,19 +1248,17 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<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>
|
||||
|
||||
@@ -1318,8 +1268,8 @@
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../chapter_graph/graph/" class="md-nav__link">
|
||||
9.1. 图
|
||||
<a href="../../chapter_heap/heap/" class="md-nav__link">
|
||||
9.1. 堆
|
||||
</a>
|
||||
</li>
|
||||
|
||||
@@ -1332,8 +1282,8 @@
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../chapter_graph/graph_operations/" class="md-nav__link">
|
||||
9.2. 图基础操作
|
||||
<a href="../../chapter_heap/build_heap/" class="md-nav__link">
|
||||
9.2. 建堆操作 *
|
||||
</a>
|
||||
</li>
|
||||
|
||||
@@ -1346,22 +1296,8 @@
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../chapter_graph/graph_traversal/" class="md-nav__link">
|
||||
9.3. 图的遍历
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../chapter_graph/summary/" class="md-nav__link">
|
||||
9.4. 小结
|
||||
<a href="../../chapter_heap/summary/" class="md-nav__link">
|
||||
9.3. 小结
|
||||
</a>
|
||||
</li>
|
||||
|
||||
@@ -1404,14 +1340,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>
|
||||
|
||||
@@ -1421,8 +1357,8 @@
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../chapter_searching/linear_search/" class="md-nav__link">
|
||||
10.1. 线性查找
|
||||
<a href="../../chapter_graph/graph/" class="md-nav__link">
|
||||
10.1. 图
|
||||
</a>
|
||||
</li>
|
||||
|
||||
@@ -1435,8 +1371,8 @@
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../chapter_searching/binary_search/" class="md-nav__link">
|
||||
10.2. 二分查找
|
||||
<a href="../../chapter_graph/graph_operations/" class="md-nav__link">
|
||||
10.2. 图基础操作
|
||||
</a>
|
||||
</li>
|
||||
|
||||
@@ -1449,8 +1385,8 @@
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../chapter_searching/hashing_search/" class="md-nav__link">
|
||||
10.3. 哈希查找
|
||||
<a href="../../chapter_graph/graph_traversal/" class="md-nav__link">
|
||||
10.3. 图的遍历
|
||||
</a>
|
||||
</li>
|
||||
|
||||
@@ -1463,7 +1399,7 @@
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../chapter_searching/summary/" class="md-nav__link">
|
||||
<a href="../../chapter_graph/summary/" class="md-nav__link">
|
||||
10.4. 小结
|
||||
</a>
|
||||
</li>
|
||||
@@ -1605,7 +1541,7 @@
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../chapter_sorting/bucket_sort/" class="md-nav__link">
|
||||
11.6. 桶排序(New)
|
||||
11.6. 桶排序
|
||||
</a>
|
||||
</li>
|
||||
|
||||
@@ -1619,7 +1555,7 @@
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../chapter_sorting/counting_sort/" class="md-nav__link">
|
||||
11.7. 计数排序(New)
|
||||
11.7. 计数排序
|
||||
</a>
|
||||
</li>
|
||||
|
||||
@@ -1633,7 +1569,7 @@
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../chapter_sorting/radix_sort/" class="md-nav__link">
|
||||
11.8. 基数排序(New)
|
||||
11.8. 基数排序
|
||||
</a>
|
||||
</li>
|
||||
|
||||
@@ -1681,17 +1617,21 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<label class="md-nav__link" for="__nav_13" id="__nav_13_label" tabindex="0">
|
||||
12. 回溯算法
|
||||
12. 搜索算法
|
||||
<span class="md-nav__icon md-icon"></span>
|
||||
</label>
|
||||
|
||||
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_13_label" aria-expanded="false">
|
||||
<label class="md-nav__title" for="__nav_13">
|
||||
<span class="md-nav__icon md-icon"></span>
|
||||
12. 回溯算法
|
||||
12. 搜索算法
|
||||
</label>
|
||||
<ul class="md-nav__list" data-md-scrollfix>
|
||||
|
||||
@@ -1701,8 +1641,36 @@
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../chapter_backtracking/backtracking_algorithm/" class="md-nav__link">
|
||||
12.1. 回溯算法(New)
|
||||
<a href="../../chapter_searching/searching_algorithm_revisited/" class="md-nav__link">
|
||||
12.1. 搜索算法(New)
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../chapter_searching/replace_linear_by_hashing/" class="md-nav__link">
|
||||
12.2. 哈希优化策略
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../chapter_searching/summary/" class="md-nav__link">
|
||||
12.3. 小结
|
||||
</a>
|
||||
</li>
|
||||
|
||||
@@ -1736,19 +1704,17 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<label class="md-nav__link" for="__nav_14" id="__nav_14_label" tabindex="0">
|
||||
13. 附录
|
||||
13. 回溯算法
|
||||
<span class="md-nav__icon md-icon"></span>
|
||||
</label>
|
||||
|
||||
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_14_label" aria-expanded="false">
|
||||
<label class="md-nav__title" for="__nav_14">
|
||||
<span class="md-nav__icon md-icon"></span>
|
||||
13. 附录
|
||||
13. 回溯算法
|
||||
</label>
|
||||
<ul class="md-nav__list" data-md-scrollfix>
|
||||
|
||||
@@ -1758,22 +1724,8 @@
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../chapter_appendix/installation/" class="md-nav__link">
|
||||
13.1. 编程环境安装
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../chapter_appendix/contribution/" class="md-nav__link">
|
||||
13.2. 一起参与创作
|
||||
<a href="../../chapter_backtracking/backtracking_algorithm/" class="md-nav__link">
|
||||
13.1. 回溯算法(New)
|
||||
</a>
|
||||
</li>
|
||||
|
||||
@@ -1806,6 +1758,77 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<label class="md-nav__link" for="__nav_15" id="__nav_15_label" tabindex="0">
|
||||
14. 附录
|
||||
<span class="md-nav__icon md-icon"></span>
|
||||
</label>
|
||||
|
||||
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_15_label" aria-expanded="false">
|
||||
<label class="md-nav__title" for="__nav_15">
|
||||
<span class="md-nav__icon md-icon"></span>
|
||||
14. 附录
|
||||
</label>
|
||||
<ul class="md-nav__list" data-md-scrollfix>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../chapter_appendix/installation/" class="md-nav__link">
|
||||
14.1. 编程环境安装
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../chapter_appendix/contribution/" class="md-nav__link">
|
||||
14.2. 一起参与创作
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
</ul>
|
||||
</nav>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item md-nav__item--section md-nav__item--nested">
|
||||
|
||||
|
||||
|
||||
|
||||
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_16" >
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -1818,8 +1841,8 @@
|
||||
|
||||
</div>
|
||||
|
||||
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_15_label" aria-expanded="false">
|
||||
<label class="md-nav__title" for="__nav_15">
|
||||
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_16_label" aria-expanded="false">
|
||||
<label class="md-nav__title" for="__nav_16">
|
||||
<span class="md-nav__icon md-icon"></span>
|
||||
参考文献
|
||||
</label>
|
||||
@@ -1860,11 +1883,11 @@
|
||||
<ul class="md-nav__list" data-md-component="toc" data-md-scrollfix>
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="#741-avl" class="md-nav__link">
|
||||
7.4.1. AVL 树常见术语
|
||||
<a href="#841-avl" class="md-nav__link">
|
||||
8.4.1. AVL 树常见术语
|
||||
</a>
|
||||
|
||||
<nav class="md-nav" aria-label="7.4.1. AVL 树常见术语">
|
||||
<nav class="md-nav" aria-label="8.4.1. AVL 树常见术语">
|
||||
<ul class="md-nav__list">
|
||||
|
||||
<li class="md-nav__item">
|
||||
@@ -1887,11 +1910,11 @@
|
||||
</li>
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="#742-avl" class="md-nav__link">
|
||||
7.4.2. AVL 树旋转
|
||||
<a href="#842-avl" class="md-nav__link">
|
||||
8.4.2. AVL 树旋转
|
||||
</a>
|
||||
|
||||
<nav class="md-nav" aria-label="7.4.2. AVL 树旋转">
|
||||
<nav class="md-nav" aria-label="8.4.2. AVL 树旋转">
|
||||
<ul class="md-nav__list">
|
||||
|
||||
<li class="md-nav__item">
|
||||
@@ -1935,11 +1958,11 @@
|
||||
</li>
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="#743-avl" class="md-nav__link">
|
||||
7.4.3. AVL 树常用操作
|
||||
<a href="#843-avl" class="md-nav__link">
|
||||
8.4.3. AVL 树常用操作
|
||||
</a>
|
||||
|
||||
<nav class="md-nav" aria-label="7.4.3. AVL 树常用操作">
|
||||
<nav class="md-nav" aria-label="8.4.3. AVL 树常用操作">
|
||||
<ul class="md-nav__list">
|
||||
|
||||
<li class="md-nav__item">
|
||||
@@ -1969,8 +1992,8 @@
|
||||
</li>
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="#744-avl" class="md-nav__link">
|
||||
7.4.4. AVL 树典型应用
|
||||
<a href="#844-avl" class="md-nav__link">
|
||||
8.4.4. AVL 树典型应用
|
||||
</a>
|
||||
|
||||
</li>
|
||||
@@ -1998,7 +2021,7 @@
|
||||
|
||||
|
||||
|
||||
<h1 id="74-avl">7.4. AVL 树 *<a class="headerlink" href="#74-avl" title="Permanent link">¶</a></h1>
|
||||
<h1 id="84-avl">8.4. AVL 树 *<a class="headerlink" href="#84-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="AVL 树在删除节点后发生退化" src="../avl_tree.assets/avltree_degradation_from_removing_node.png" /></p>
|
||||
@@ -2009,7 +2032,7 @@
|
||||
<p align="center"> Fig. AVL 树在插入节点后发生退化 </p>
|
||||
|
||||
<p>G. M. Adelson-Velsky 和 E. M. Landis 在其 1962 年发表的论文 "An algorithm for the organization of information" 中提出了「AVL 树」。论文中详细描述了一系列操作,确保在持续添加和删除节点后,AVL 树不会退化,从而使得各种操作的时间复杂度保持在 <span class="arithmatex">\(O(\log n)\)</span> 级别。换句话说,在需要频繁进行增删查改操作的场景中,AVL 树能始终保持高效的数据操作性能,具有很好的应用价值。</p>
|
||||
<h2 id="741-avl">7.4.1. AVL 树常见术语<a class="headerlink" href="#741-avl" title="Permanent link">¶</a></h2>
|
||||
<h2 id="841-avl">8.4.1. AVL 树常见术语<a class="headerlink" href="#841-avl" title="Permanent link">¶</a></h2>
|
||||
<p>「AVL 树」既是二叉搜索树也是平衡二叉树,同时满足这两类二叉树的所有性质,因此也被称为「平衡二叉搜索树」。</p>
|
||||
<h3 id="_1">节点高度<a class="headerlink" href="#_1" title="Permanent link">¶</a></h3>
|
||||
<p>在操作 AVL 树时,我们需要获取节点的高度,因此需要为 AVL 树的节点类添加 <code>height</code> 变量。</p>
|
||||
@@ -2382,7 +2405,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="842-avl">8.4.2. AVL 树旋转<a class="headerlink" href="#842-avl" title="Permanent link">¶</a></h2>
|
||||
<p>AVL 树的特点在于「旋转 Rotation」操作,它能够在不影响二叉树的中序遍历序列的前提下,使失衡节点重新恢复平衡。换句话说,<strong>旋转操作既能保持树的「二叉搜索树」属性,也能使树重新变为「平衡二叉树」</strong>。</p>
|
||||
<p>我们将平衡因子绝对值 <span class="arithmatex">\(> 1\)</span> 的节点称为「失衡节点」。根据节点失衡情况的不同,旋转操作分为四种:右旋、左旋、先右旋后左旋、先左旋后右旋。下面我们将详细介绍这些旋转操作。</p>
|
||||
<h3 id="_3">右旋<a class="headerlink" href="#_3" title="Permanent link">¶</a></h3>
|
||||
@@ -3073,7 +3096,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="843-avl">8.4.3. AVL 树常用操作<a class="headerlink" href="#843-avl" title="Permanent link">¶</a></h2>
|
||||
<h3 id="_8">插入节点<a class="headerlink" href="#_8" title="Permanent link">¶</a></h3>
|
||||
<p>「AVL 树」的节点插入操作与「二叉搜索树」在主体上类似。唯一的区别在于,在 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>
|
||||
@@ -3723,7 +3746,7 @@
|
||||
</div>
|
||||
<h3 id="_10">查找节点<a class="headerlink" href="#_10" 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="844-avl">8.4.4. AVL 树典型应用<a class="headerlink" href="#844-avl" title="Permanent link">¶</a></h2>
|
||||
<ul>
|
||||
<li>组织和存储大型数据,适用于高频查找、低频增删的场景;</li>
|
||||
<li>用于构建数据库中的索引系统;</li>
|
||||
@@ -3809,7 +3832,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. &nbsp; 二叉搜索树" rel="prev">
|
||||
<a href="../binary_search_tree/" class="md-footer__link md-footer__link--prev" aria-label="上一页: 8.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>
|
||||
@@ -3818,20 +3841,20 @@
|
||||
上一页
|
||||
</span>
|
||||
<div class="md-ellipsis">
|
||||
7.3. 二叉搜索树
|
||||
8.3. 二叉搜索树
|
||||
</div>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
|
||||
|
||||
<a href="../summary/" class="md-footer__link md-footer__link--next" aria-label="下一页: 7.5. &nbsp; 小结" rel="next">
|
||||
<a href="../summary/" class="md-footer__link md-footer__link--next" aria-label="下一页: 8.5. &nbsp; 小结" rel="next">
|
||||
<div class="md-footer__title">
|
||||
<span class="md-footer__direction">
|
||||
下一页
|
||||
</span>
|
||||
<div class="md-ellipsis">
|
||||
7.5. 小结
|
||||
8.5. 小结
|
||||
</div>
|
||||
</div>
|
||||
<div class="md-footer__button md-icon">
|
||||
|
||||
@@ -25,7 +25,7 @@
|
||||
|
||||
|
||||
|
||||
<title>7.3. 二叉搜索树 - Hello 算法</title>
|
||||
<title>8.3. 二叉搜索树 - Hello 算法</title>
|
||||
|
||||
|
||||
|
||||
@@ -79,7 +79,7 @@
|
||||
<div data-md-component="skip">
|
||||
|
||||
|
||||
<a href="#73" class="md-skip">
|
||||
<a href="#83" class="md-skip">
|
||||
跳转至
|
||||
</a>
|
||||
|
||||
@@ -113,7 +113,7 @@
|
||||
<div class="md-header__topic" data-md-component="header-topic">
|
||||
<span class="md-ellipsis">
|
||||
|
||||
7.3. 二叉搜索树
|
||||
8.3. 二叉搜索树
|
||||
|
||||
</span>
|
||||
</div>
|
||||
@@ -441,8 +441,6 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<label class="md-nav__link" for="__nav_3" id="__nav_3_label" tabindex="0">
|
||||
@@ -504,23 +502,9 @@
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../chapter_computational_complexity/space_time_tradeoff/" class="md-nav__link">
|
||||
2.4. 权衡时间与空间
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../chapter_computational_complexity/summary/" class="md-nav__link">
|
||||
2.5. 小结
|
||||
2.4. 小结
|
||||
</a>
|
||||
</li>
|
||||
|
||||
@@ -847,21 +831,76 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<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>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../chapter_binary_search/binary_search/" class="md-nav__link">
|
||||
6.1. 二分查找
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
</ul>
|
||||
</nav>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item md-nav__item--section md-nav__item--nested">
|
||||
|
||||
|
||||
|
||||
|
||||
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_8" >
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<label class="md-nav__link" for="__nav_8" id="__nav_8_label" tabindex="0">
|
||||
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="false">
|
||||
<label class="md-nav__title" for="__nav_8">
|
||||
<span class="md-nav__icon md-icon"></span>
|
||||
7. 散列表
|
||||
</label>
|
||||
<ul class="md-nav__list" data-md-scrollfix>
|
||||
|
||||
@@ -872,7 +911,7 @@
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../chapter_hashing/hash_map/" class="md-nav__link">
|
||||
6.1. 哈希表
|
||||
7.1. 哈希表
|
||||
</a>
|
||||
</li>
|
||||
|
||||
@@ -886,7 +925,7 @@
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../chapter_hashing/hash_collision/" class="md-nav__link">
|
||||
6.2. 哈希冲突处理
|
||||
7.2. 哈希冲突处理
|
||||
</a>
|
||||
</li>
|
||||
|
||||
@@ -900,7 +939,7 @@
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../chapter_hashing/summary/" class="md-nav__link">
|
||||
6.3. 小结
|
||||
7.3. 小结
|
||||
</a>
|
||||
</li>
|
||||
|
||||
@@ -930,7 +969,7 @@
|
||||
|
||||
|
||||
|
||||
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_8" checked>
|
||||
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_9" checked>
|
||||
|
||||
|
||||
|
||||
@@ -946,15 +985,15 @@
|
||||
|
||||
|
||||
|
||||
<label class="md-nav__link" for="__nav_8" id="__nav_8_label" tabindex="0">
|
||||
7. 树
|
||||
<label class="md-nav__link" for="__nav_9" id="__nav_9_label" tabindex="0">
|
||||
8. 树
|
||||
<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">
|
||||
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_9_label" aria-expanded="true">
|
||||
<label class="md-nav__title" for="__nav_9">
|
||||
<span class="md-nav__icon md-icon"></span>
|
||||
7. 树
|
||||
8. 树
|
||||
</label>
|
||||
<ul class="md-nav__list" data-md-scrollfix>
|
||||
|
||||
@@ -965,7 +1004,7 @@
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../binary_tree/" class="md-nav__link">
|
||||
7.1. 二叉树
|
||||
8.1. 二叉树
|
||||
</a>
|
||||
</li>
|
||||
|
||||
@@ -979,7 +1018,7 @@
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../binary_tree_traversal/" class="md-nav__link">
|
||||
7.2. 二叉树遍历
|
||||
8.2. 二叉树遍历
|
||||
</a>
|
||||
</li>
|
||||
|
||||
@@ -1002,12 +1041,12 @@
|
||||
|
||||
|
||||
<label class="md-nav__link md-nav__link--active" for="__toc">
|
||||
7.3. 二叉搜索树
|
||||
8.3. 二叉搜索树
|
||||
<span class="md-nav__icon md-icon"></span>
|
||||
</label>
|
||||
|
||||
<a href="./" class="md-nav__link md-nav__link--active">
|
||||
7.3. 二叉搜索树
|
||||
8.3. 二叉搜索树
|
||||
</a>
|
||||
|
||||
|
||||
@@ -1026,11 +1065,11 @@
|
||||
<ul class="md-nav__list" data-md-component="toc" data-md-scrollfix>
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="#731" class="md-nav__link">
|
||||
7.3.1. 二叉搜索树的操作
|
||||
<a href="#831" class="md-nav__link">
|
||||
8.3.1. 二叉搜索树的操作
|
||||
</a>
|
||||
|
||||
<nav class="md-nav" aria-label="7.3.1. 二叉搜索树的操作">
|
||||
<nav class="md-nav" aria-label="8.3.1. 二叉搜索树的操作">
|
||||
<ul class="md-nav__list">
|
||||
|
||||
<li class="md-nav__item">
|
||||
@@ -1067,22 +1106,15 @@
|
||||
</li>
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="#732" class="md-nav__link">
|
||||
7.3.2. 二叉搜索树的效率
|
||||
<a href="#832" class="md-nav__link">
|
||||
8.3.2. 二叉搜索树的效率
|
||||
</a>
|
||||
|
||||
</li>
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="#733" class="md-nav__link">
|
||||
7.3.3. 二叉搜索树的退化
|
||||
</a>
|
||||
|
||||
</li>
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="#734" class="md-nav__link">
|
||||
7.3.4. 二叉搜索树常见应用
|
||||
<a href="#833" class="md-nav__link">
|
||||
8.3.3. 二叉搜索树常见应用
|
||||
</a>
|
||||
|
||||
</li>
|
||||
@@ -1103,7 +1135,7 @@
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../avl_tree/" class="md-nav__link">
|
||||
7.4. AVL 树 *
|
||||
8.4. AVL 树 *
|
||||
</a>
|
||||
</li>
|
||||
|
||||
@@ -1117,94 +1149,7 @@
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../summary/" class="md-nav__link">
|
||||
7.5. 小结
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
</ul>
|
||||
</nav>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item md-nav__item--section md-nav__item--nested">
|
||||
|
||||
|
||||
|
||||
|
||||
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_9" >
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<label class="md-nav__link" for="__nav_9" id="__nav_9_label" tabindex="0">
|
||||
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. 堆
|
||||
</label>
|
||||
<ul class="md-nav__list" data-md-scrollfix>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../chapter_heap/heap/" class="md-nav__link">
|
||||
8.1. 堆
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../chapter_heap/build_heap/" class="md-nav__link">
|
||||
8.2. 建堆操作 *
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../chapter_heap/summary/" class="md-nav__link">
|
||||
8.3. 小结
|
||||
8.5. 小结
|
||||
</a>
|
||||
</li>
|
||||
|
||||
@@ -1242,19 +1187,17 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<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>
|
||||
|
||||
@@ -1264,8 +1207,8 @@
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../chapter_graph/graph/" class="md-nav__link">
|
||||
9.1. 图
|
||||
<a href="../../chapter_heap/heap/" class="md-nav__link">
|
||||
9.1. 堆
|
||||
</a>
|
||||
</li>
|
||||
|
||||
@@ -1278,8 +1221,8 @@
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../chapter_graph/graph_operations/" class="md-nav__link">
|
||||
9.2. 图基础操作
|
||||
<a href="../../chapter_heap/build_heap/" class="md-nav__link">
|
||||
9.2. 建堆操作 *
|
||||
</a>
|
||||
</li>
|
||||
|
||||
@@ -1292,22 +1235,8 @@
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../chapter_graph/graph_traversal/" class="md-nav__link">
|
||||
9.3. 图的遍历
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../chapter_graph/summary/" class="md-nav__link">
|
||||
9.4. 小结
|
||||
<a href="../../chapter_heap/summary/" class="md-nav__link">
|
||||
9.3. 小结
|
||||
</a>
|
||||
</li>
|
||||
|
||||
@@ -1350,14 +1279,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>
|
||||
|
||||
@@ -1367,8 +1296,8 @@
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../chapter_searching/linear_search/" class="md-nav__link">
|
||||
10.1. 线性查找
|
||||
<a href="../../chapter_graph/graph/" class="md-nav__link">
|
||||
10.1. 图
|
||||
</a>
|
||||
</li>
|
||||
|
||||
@@ -1381,8 +1310,8 @@
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../chapter_searching/binary_search/" class="md-nav__link">
|
||||
10.2. 二分查找
|
||||
<a href="../../chapter_graph/graph_operations/" class="md-nav__link">
|
||||
10.2. 图基础操作
|
||||
</a>
|
||||
</li>
|
||||
|
||||
@@ -1395,8 +1324,8 @@
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../chapter_searching/hashing_search/" class="md-nav__link">
|
||||
10.3. 哈希查找
|
||||
<a href="../../chapter_graph/graph_traversal/" class="md-nav__link">
|
||||
10.3. 图的遍历
|
||||
</a>
|
||||
</li>
|
||||
|
||||
@@ -1409,7 +1338,7 @@
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../chapter_searching/summary/" class="md-nav__link">
|
||||
<a href="../../chapter_graph/summary/" class="md-nav__link">
|
||||
10.4. 小结
|
||||
</a>
|
||||
</li>
|
||||
@@ -1551,7 +1480,7 @@
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../chapter_sorting/bucket_sort/" class="md-nav__link">
|
||||
11.6. 桶排序(New)
|
||||
11.6. 桶排序
|
||||
</a>
|
||||
</li>
|
||||
|
||||
@@ -1565,7 +1494,7 @@
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../chapter_sorting/counting_sort/" class="md-nav__link">
|
||||
11.7. 计数排序(New)
|
||||
11.7. 计数排序
|
||||
</a>
|
||||
</li>
|
||||
|
||||
@@ -1579,7 +1508,7 @@
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../chapter_sorting/radix_sort/" class="md-nav__link">
|
||||
11.8. 基数排序(New)
|
||||
11.8. 基数排序
|
||||
</a>
|
||||
</li>
|
||||
|
||||
@@ -1627,17 +1556,21 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<label class="md-nav__link" for="__nav_13" id="__nav_13_label" tabindex="0">
|
||||
12. 回溯算法
|
||||
12. 搜索算法
|
||||
<span class="md-nav__icon md-icon"></span>
|
||||
</label>
|
||||
|
||||
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_13_label" aria-expanded="false">
|
||||
<label class="md-nav__title" for="__nav_13">
|
||||
<span class="md-nav__icon md-icon"></span>
|
||||
12. 回溯算法
|
||||
12. 搜索算法
|
||||
</label>
|
||||
<ul class="md-nav__list" data-md-scrollfix>
|
||||
|
||||
@@ -1647,8 +1580,36 @@
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../chapter_backtracking/backtracking_algorithm/" class="md-nav__link">
|
||||
12.1. 回溯算法(New)
|
||||
<a href="../../chapter_searching/searching_algorithm_revisited/" class="md-nav__link">
|
||||
12.1. 搜索算法(New)
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../chapter_searching/replace_linear_by_hashing/" class="md-nav__link">
|
||||
12.2. 哈希优化策略
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../chapter_searching/summary/" class="md-nav__link">
|
||||
12.3. 小结
|
||||
</a>
|
||||
</li>
|
||||
|
||||
@@ -1682,19 +1643,17 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<label class="md-nav__link" for="__nav_14" id="__nav_14_label" tabindex="0">
|
||||
13. 附录
|
||||
13. 回溯算法
|
||||
<span class="md-nav__icon md-icon"></span>
|
||||
</label>
|
||||
|
||||
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_14_label" aria-expanded="false">
|
||||
<label class="md-nav__title" for="__nav_14">
|
||||
<span class="md-nav__icon md-icon"></span>
|
||||
13. 附录
|
||||
13. 回溯算法
|
||||
</label>
|
||||
<ul class="md-nav__list" data-md-scrollfix>
|
||||
|
||||
@@ -1704,22 +1663,8 @@
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../chapter_appendix/installation/" class="md-nav__link">
|
||||
13.1. 编程环境安装
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../chapter_appendix/contribution/" class="md-nav__link">
|
||||
13.2. 一起参与创作
|
||||
<a href="../../chapter_backtracking/backtracking_algorithm/" class="md-nav__link">
|
||||
13.1. 回溯算法(New)
|
||||
</a>
|
||||
</li>
|
||||
|
||||
@@ -1752,6 +1697,77 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<label class="md-nav__link" for="__nav_15" id="__nav_15_label" tabindex="0">
|
||||
14. 附录
|
||||
<span class="md-nav__icon md-icon"></span>
|
||||
</label>
|
||||
|
||||
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_15_label" aria-expanded="false">
|
||||
<label class="md-nav__title" for="__nav_15">
|
||||
<span class="md-nav__icon md-icon"></span>
|
||||
14. 附录
|
||||
</label>
|
||||
<ul class="md-nav__list" data-md-scrollfix>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../chapter_appendix/installation/" class="md-nav__link">
|
||||
14.1. 编程环境安装
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../chapter_appendix/contribution/" class="md-nav__link">
|
||||
14.2. 一起参与创作
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
</ul>
|
||||
</nav>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item md-nav__item--section md-nav__item--nested">
|
||||
|
||||
|
||||
|
||||
|
||||
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_16" >
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -1764,8 +1780,8 @@
|
||||
|
||||
</div>
|
||||
|
||||
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_15_label" aria-expanded="false">
|
||||
<label class="md-nav__title" for="__nav_15">
|
||||
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_16_label" aria-expanded="false">
|
||||
<label class="md-nav__title" for="__nav_16">
|
||||
<span class="md-nav__icon md-icon"></span>
|
||||
参考文献
|
||||
</label>
|
||||
@@ -1806,11 +1822,11 @@
|
||||
<ul class="md-nav__list" data-md-component="toc" data-md-scrollfix>
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="#731" class="md-nav__link">
|
||||
7.3.1. 二叉搜索树的操作
|
||||
<a href="#831" class="md-nav__link">
|
||||
8.3.1. 二叉搜索树的操作
|
||||
</a>
|
||||
|
||||
<nav class="md-nav" aria-label="7.3.1. 二叉搜索树的操作">
|
||||
<nav class="md-nav" aria-label="8.3.1. 二叉搜索树的操作">
|
||||
<ul class="md-nav__list">
|
||||
|
||||
<li class="md-nav__item">
|
||||
@@ -1847,22 +1863,15 @@
|
||||
</li>
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="#732" class="md-nav__link">
|
||||
7.3.2. 二叉搜索树的效率
|
||||
<a href="#832" class="md-nav__link">
|
||||
8.3.2. 二叉搜索树的效率
|
||||
</a>
|
||||
|
||||
</li>
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="#733" class="md-nav__link">
|
||||
7.3.3. 二叉搜索树的退化
|
||||
</a>
|
||||
|
||||
</li>
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="#734" class="md-nav__link">
|
||||
7.3.4. 二叉搜索树常见应用
|
||||
<a href="#833" class="md-nav__link">
|
||||
8.3.3. 二叉搜索树常见应用
|
||||
</a>
|
||||
|
||||
</li>
|
||||
@@ -1890,7 +1899,7 @@
|
||||
|
||||
|
||||
|
||||
<h1 id="73">7.3. 二叉搜索树<a class="headerlink" href="#73" title="Permanent link">¶</a></h1>
|
||||
<h1 id="83">8.3. 二叉搜索树<a class="headerlink" href="#83" title="Permanent link">¶</a></h1>
|
||||
<p>「二叉搜索树 Binary Search Tree」满足以下条件:</p>
|
||||
<ol>
|
||||
<li>对于根节点,左子树中所有节点的值 <span class="arithmatex">\(<\)</span> 根节点的值 <span class="arithmatex">\(<\)</span> 右子树中所有节点的值;</li>
|
||||
@@ -1899,7 +1908,7 @@
|
||||
<p><img alt="二叉搜索树" src="../binary_search_tree.assets/binary_search_tree.png" /></p>
|
||||
<p align="center"> Fig. 二叉搜索树 </p>
|
||||
|
||||
<h2 id="731">7.3.1. 二叉搜索树的操作<a class="headerlink" href="#731" title="Permanent link">¶</a></h2>
|
||||
<h2 id="831">8.3.1. 二叉搜索树的操作<a class="headerlink" href="#831" title="Permanent link">¶</a></h2>
|
||||
<h3 id="_1">查找节点<a class="headerlink" href="#_1" title="Permanent link">¶</a></h3>
|
||||
<p>给定目标节点值 <code>num</code> ,可以根据二叉搜索树的性质来查找。我们声明一个节点 <code>cur</code> ,从二叉树的根节点 <code>root</code> 出发,循环比较节点值 <code>cur.val</code> 和 <code>num</code> 之间的大小关系</p>
|
||||
<ul>
|
||||
@@ -2903,67 +2912,43 @@
|
||||
<p><img alt="二叉搜索树的中序遍历序列" src="../binary_search_tree.assets/bst_inorder_traversal.png" /></p>
|
||||
<p align="center"> Fig. 二叉搜索树的中序遍历序列 </p>
|
||||
|
||||
<h2 id="732">7.3.2. 二叉搜索树的效率<a class="headerlink" href="#732" title="Permanent link">¶</a></h2>
|
||||
<p>假设给定 <span class="arithmatex">\(n\)</span> 个数字,最常见的存储方式是「数组」。对于这串乱序的数字,常见操作的效率如下:</p>
|
||||
<ul>
|
||||
<li><strong>查找元素</strong>:由于数组是无序的,因此需要遍历数组来确定,使用 <span class="arithmatex">\(O(n)\)</span> 时间;</li>
|
||||
<li><strong>插入元素</strong>:只需将元素添加至数组尾部即可,使用 <span class="arithmatex">\(O(1)\)</span> 时间;</li>
|
||||
<li><strong>删除元素</strong>:先查找元素,使用 <span class="arithmatex">\(O(n)\)</span> 时间,再在数组中删除该元素,使用 <span class="arithmatex">\(O(n)\)</span> 时间;</li>
|
||||
<li><strong>获取最小 / 最大元素</strong>:需要遍历数组来确定,使用 <span class="arithmatex">\(O(n)\)</span> 时间;</li>
|
||||
</ul>
|
||||
<p>为了获得先验信息,我们可以预先将数组元素进行排序,得到一个「排序数组」。此时操作效率如下:</p>
|
||||
<ul>
|
||||
<li><strong>查找元素</strong>:由于数组已排序,可以使用二分查找,平均使用 <span class="arithmatex">\(O(\log n)\)</span> 时间;</li>
|
||||
<li><strong>插入元素</strong>:先查找插入位置,使用 <span class="arithmatex">\(O(\log n)\)</span> 时间,再插入到指定位置,使用 <span class="arithmatex">\(O(n)\)</span> 时间;</li>
|
||||
<li><strong>删除元素</strong>:先查找元素,使用 <span class="arithmatex">\(O(\log n)\)</span> 时间,再在数组中删除该元素,使用 <span class="arithmatex">\(O(n)\)</span> 时间;</li>
|
||||
<li><strong>获取最小 / 最大元素</strong>:数组头部和尾部元素即是最小和最大元素,使用 <span class="arithmatex">\(O(1)\)</span> 时间;</li>
|
||||
</ul>
|
||||
<p>观察可知,无序数组和有序数组中的各项操作的时间复杂度呈现“偏科”的特点,即有的快有的慢。<strong>然而,二叉搜索树的各项操作的时间复杂度都是对数阶,在数据量 <span class="arithmatex">\(n\)</span> 较大时具有显著优势</strong>。</p>
|
||||
<h2 id="832">8.3.2. 二叉搜索树的效率<a class="headerlink" href="#832" title="Permanent link">¶</a></h2>
|
||||
<p>给定一组数据,我们考虑使用数组或二叉搜索树存储。</p>
|
||||
<p>观察可知,二叉搜索树的各项操作的时间复杂度都是对数阶,具有稳定且高效的性能表现。只有在高频添加、低频查找删除的数据适用场景下,数组比二叉搜索树的效率更高。</p>
|
||||
<div class="center-table">
|
||||
<table>
|
||||
<thead>
|
||||
<tr>
|
||||
<th></th>
|
||||
<th>无序数组</th>
|
||||
<th>有序数组</th>
|
||||
<th>二叉搜索树</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>查找指定元素</td>
|
||||
<td>查找元素</td>
|
||||
<td><span class="arithmatex">\(O(n)\)</span></td>
|
||||
<td><span class="arithmatex">\(O(\log n)\)</span></td>
|
||||
<td><span class="arithmatex">\(O(\log n)\)</span></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>插入元素</td>
|
||||
<td><span class="arithmatex">\(O(1)\)</span></td>
|
||||
<td><span class="arithmatex">\(O(n)\)</span></td>
|
||||
<td><span class="arithmatex">\(O(\log n)\)</span></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>删除元素</td>
|
||||
<td><span class="arithmatex">\(O(n)\)</span></td>
|
||||
<td><span class="arithmatex">\(O(n)\)</span></td>
|
||||
<td><span class="arithmatex">\(O(\log n)\)</span></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>获取最小 / 最大元素</td>
|
||||
<td><span class="arithmatex">\(O(n)\)</span></td>
|
||||
<td><span class="arithmatex">\(O(1)\)</span></td>
|
||||
<td><span class="arithmatex">\(O(\log n)\)</span></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<h2 id="733">7.3.3. 二叉搜索树的退化<a class="headerlink" href="#733" title="Permanent link">¶</a></h2>
|
||||
<p>在理想情况下,我们希望二叉搜索树是“平衡”的,这样就可以在 <span class="arithmatex">\(\log n\)</span> 轮循环内查找任意节点。</p>
|
||||
<p>在理想情况下,二叉搜索树是“平衡”的,这样就可以在 <span class="arithmatex">\(\log n\)</span> 轮循环内查找任意节点。</p>
|
||||
<p>然而,如果我们在二叉搜索树中不断地插入和删除节点,可能导致二叉树退化为链表,这时各种操作的时间复杂度也会退化为 <span class="arithmatex">\(O(n)\)</span> 。</p>
|
||||
<p><img alt="二叉搜索树的平衡与退化" src="../binary_search_tree.assets/bst_degradation.png" /></p>
|
||||
<p align="center"> Fig. 二叉搜索树的平衡与退化 </p>
|
||||
|
||||
<h2 id="734">7.3.4. 二叉搜索树常见应用<a class="headerlink" href="#734" title="Permanent link">¶</a></h2>
|
||||
<h2 id="833">8.3.3. 二叉搜索树常见应用<a class="headerlink" href="#833" title="Permanent link">¶</a></h2>
|
||||
<ul>
|
||||
<li>用作系统中的多级索引,实现高效的查找、插入、删除操作。</li>
|
||||
<li>作为某些搜索算法的底层数据结构。</li>
|
||||
@@ -3046,7 +3031,7 @@
|
||||
<nav class="md-footer__inner md-grid" aria-label="页脚" >
|
||||
|
||||
|
||||
<a href="../binary_tree_traversal/" class="md-footer__link md-footer__link--prev" aria-label="上一页: 7.2. &nbsp; 二叉树遍历" rel="prev">
|
||||
<a href="../binary_tree_traversal/" class="md-footer__link md-footer__link--prev" aria-label="上一页: 8.2. &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>
|
||||
@@ -3055,20 +3040,20 @@
|
||||
上一页
|
||||
</span>
|
||||
<div class="md-ellipsis">
|
||||
7.2. 二叉树遍历
|
||||
8.2. 二叉树遍历
|
||||
</div>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
|
||||
|
||||
<a href="../avl_tree/" class="md-footer__link md-footer__link--next" aria-label="下一页: 7.4. &nbsp; AVL 树 *" rel="next">
|
||||
<a href="../avl_tree/" class="md-footer__link md-footer__link--next" aria-label="下一页: 8.4. &nbsp; AVL 树 *" rel="next">
|
||||
<div class="md-footer__title">
|
||||
<span class="md-footer__direction">
|
||||
下一页
|
||||
</span>
|
||||
<div class="md-ellipsis">
|
||||
7.4. AVL 树 *
|
||||
8.4. AVL 树 *
|
||||
</div>
|
||||
</div>
|
||||
<div class="md-footer__button md-icon">
|
||||
|
||||
+245
-222
@@ -25,7 +25,7 @@
|
||||
|
||||
|
||||
|
||||
<title>7.1. 二叉树 - Hello 算法</title>
|
||||
<title>8.1. 二叉树 - Hello 算法</title>
|
||||
|
||||
|
||||
|
||||
@@ -79,7 +79,7 @@
|
||||
<div data-md-component="skip">
|
||||
|
||||
|
||||
<a href="#71" class="md-skip">
|
||||
<a href="#81" class="md-skip">
|
||||
跳转至
|
||||
</a>
|
||||
|
||||
@@ -113,7 +113,7 @@
|
||||
<div class="md-header__topic" data-md-component="header-topic">
|
||||
<span class="md-ellipsis">
|
||||
|
||||
7.1. 二叉树
|
||||
8.1. 二叉树
|
||||
|
||||
</span>
|
||||
</div>
|
||||
@@ -441,8 +441,6 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<label class="md-nav__link" for="__nav_3" id="__nav_3_label" tabindex="0">
|
||||
@@ -504,23 +502,9 @@
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../chapter_computational_complexity/space_time_tradeoff/" class="md-nav__link">
|
||||
2.4. 权衡时间与空间
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../chapter_computational_complexity/summary/" class="md-nav__link">
|
||||
2.5. 小结
|
||||
2.4. 小结
|
||||
</a>
|
||||
</li>
|
||||
|
||||
@@ -847,21 +831,76 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<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>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../chapter_binary_search/binary_search/" class="md-nav__link">
|
||||
6.1. 二分查找
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
</ul>
|
||||
</nav>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item md-nav__item--section md-nav__item--nested">
|
||||
|
||||
|
||||
|
||||
|
||||
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_8" >
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<label class="md-nav__link" for="__nav_8" id="__nav_8_label" tabindex="0">
|
||||
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="false">
|
||||
<label class="md-nav__title" for="__nav_8">
|
||||
<span class="md-nav__icon md-icon"></span>
|
||||
7. 散列表
|
||||
</label>
|
||||
<ul class="md-nav__list" data-md-scrollfix>
|
||||
|
||||
@@ -872,7 +911,7 @@
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../chapter_hashing/hash_map/" class="md-nav__link">
|
||||
6.1. 哈希表
|
||||
7.1. 哈希表
|
||||
</a>
|
||||
</li>
|
||||
|
||||
@@ -886,7 +925,7 @@
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../chapter_hashing/hash_collision/" class="md-nav__link">
|
||||
6.2. 哈希冲突处理
|
||||
7.2. 哈希冲突处理
|
||||
</a>
|
||||
</li>
|
||||
|
||||
@@ -900,7 +939,7 @@
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../chapter_hashing/summary/" class="md-nav__link">
|
||||
6.3. 小结
|
||||
7.3. 小结
|
||||
</a>
|
||||
</li>
|
||||
|
||||
@@ -930,7 +969,7 @@
|
||||
|
||||
|
||||
|
||||
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_8" checked>
|
||||
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_9" checked>
|
||||
|
||||
|
||||
|
||||
@@ -946,15 +985,15 @@
|
||||
|
||||
|
||||
|
||||
<label class="md-nav__link" for="__nav_8" id="__nav_8_label" tabindex="0">
|
||||
7. 树
|
||||
<label class="md-nav__link" for="__nav_9" id="__nav_9_label" tabindex="0">
|
||||
8. 树
|
||||
<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">
|
||||
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_9_label" aria-expanded="true">
|
||||
<label class="md-nav__title" for="__nav_9">
|
||||
<span class="md-nav__icon md-icon"></span>
|
||||
7. 树
|
||||
8. 树
|
||||
</label>
|
||||
<ul class="md-nav__list" data-md-scrollfix>
|
||||
|
||||
@@ -974,12 +1013,12 @@
|
||||
|
||||
|
||||
<label class="md-nav__link md-nav__link--active" for="__toc">
|
||||
7.1. 二叉树
|
||||
8.1. 二叉树
|
||||
<span class="md-nav__icon md-icon"></span>
|
||||
</label>
|
||||
|
||||
<a href="./" class="md-nav__link md-nav__link--active">
|
||||
7.1. 二叉树
|
||||
8.1. 二叉树
|
||||
</a>
|
||||
|
||||
|
||||
@@ -998,25 +1037,25 @@
|
||||
<ul class="md-nav__list" data-md-component="toc" data-md-scrollfix>
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="#711" class="md-nav__link">
|
||||
7.1.1. 二叉树常见术语
|
||||
<a href="#811" class="md-nav__link">
|
||||
8.1.1. 二叉树常见术语
|
||||
</a>
|
||||
|
||||
</li>
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="#712" class="md-nav__link">
|
||||
7.1.2. 二叉树基本操作
|
||||
<a href="#812" class="md-nav__link">
|
||||
8.1.2. 二叉树基本操作
|
||||
</a>
|
||||
|
||||
</li>
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="#713" class="md-nav__link">
|
||||
7.1.3. 常见二叉树类型
|
||||
<a href="#813" class="md-nav__link">
|
||||
8.1.3. 常见二叉树类型
|
||||
</a>
|
||||
|
||||
<nav class="md-nav" aria-label="7.1.3. 常见二叉树类型">
|
||||
<nav class="md-nav" aria-label="8.1.3. 常见二叉树类型">
|
||||
<ul class="md-nav__list">
|
||||
|
||||
<li class="md-nav__item">
|
||||
@@ -1053,15 +1092,15 @@
|
||||
</li>
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="#714" class="md-nav__link">
|
||||
7.1.4. 二叉树的退化
|
||||
<a href="#814" class="md-nav__link">
|
||||
8.1.4. 二叉树的退化
|
||||
</a>
|
||||
|
||||
</li>
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="#715" class="md-nav__link">
|
||||
7.1.5. 二叉树表示方式 *
|
||||
<a href="#815" class="md-nav__link">
|
||||
8.1.5. 二叉树表示方式 *
|
||||
</a>
|
||||
|
||||
</li>
|
||||
@@ -1082,7 +1121,7 @@
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../binary_tree_traversal/" class="md-nav__link">
|
||||
7.2. 二叉树遍历
|
||||
8.2. 二叉树遍历
|
||||
</a>
|
||||
</li>
|
||||
|
||||
@@ -1096,7 +1135,7 @@
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../binary_search_tree/" class="md-nav__link">
|
||||
7.3. 二叉搜索树
|
||||
8.3. 二叉搜索树
|
||||
</a>
|
||||
</li>
|
||||
|
||||
@@ -1110,7 +1149,7 @@
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../avl_tree/" class="md-nav__link">
|
||||
7.4. AVL 树 *
|
||||
8.4. AVL 树 *
|
||||
</a>
|
||||
</li>
|
||||
|
||||
@@ -1124,94 +1163,7 @@
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../summary/" class="md-nav__link">
|
||||
7.5. 小结
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
</ul>
|
||||
</nav>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item md-nav__item--section md-nav__item--nested">
|
||||
|
||||
|
||||
|
||||
|
||||
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_9" >
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<label class="md-nav__link" for="__nav_9" id="__nav_9_label" tabindex="0">
|
||||
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. 堆
|
||||
</label>
|
||||
<ul class="md-nav__list" data-md-scrollfix>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../chapter_heap/heap/" class="md-nav__link">
|
||||
8.1. 堆
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../chapter_heap/build_heap/" class="md-nav__link">
|
||||
8.2. 建堆操作 *
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../chapter_heap/summary/" class="md-nav__link">
|
||||
8.3. 小结
|
||||
8.5. 小结
|
||||
</a>
|
||||
</li>
|
||||
|
||||
@@ -1249,19 +1201,17 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<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>
|
||||
|
||||
@@ -1271,8 +1221,8 @@
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../chapter_graph/graph/" class="md-nav__link">
|
||||
9.1. 图
|
||||
<a href="../../chapter_heap/heap/" class="md-nav__link">
|
||||
9.1. 堆
|
||||
</a>
|
||||
</li>
|
||||
|
||||
@@ -1285,8 +1235,8 @@
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../chapter_graph/graph_operations/" class="md-nav__link">
|
||||
9.2. 图基础操作
|
||||
<a href="../../chapter_heap/build_heap/" class="md-nav__link">
|
||||
9.2. 建堆操作 *
|
||||
</a>
|
||||
</li>
|
||||
|
||||
@@ -1299,22 +1249,8 @@
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../chapter_graph/graph_traversal/" class="md-nav__link">
|
||||
9.3. 图的遍历
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../chapter_graph/summary/" class="md-nav__link">
|
||||
9.4. 小结
|
||||
<a href="../../chapter_heap/summary/" class="md-nav__link">
|
||||
9.3. 小结
|
||||
</a>
|
||||
</li>
|
||||
|
||||
@@ -1357,14 +1293,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>
|
||||
|
||||
@@ -1374,8 +1310,8 @@
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../chapter_searching/linear_search/" class="md-nav__link">
|
||||
10.1. 线性查找
|
||||
<a href="../../chapter_graph/graph/" class="md-nav__link">
|
||||
10.1. 图
|
||||
</a>
|
||||
</li>
|
||||
|
||||
@@ -1388,8 +1324,8 @@
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../chapter_searching/binary_search/" class="md-nav__link">
|
||||
10.2. 二分查找
|
||||
<a href="../../chapter_graph/graph_operations/" class="md-nav__link">
|
||||
10.2. 图基础操作
|
||||
</a>
|
||||
</li>
|
||||
|
||||
@@ -1402,8 +1338,8 @@
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../chapter_searching/hashing_search/" class="md-nav__link">
|
||||
10.3. 哈希查找
|
||||
<a href="../../chapter_graph/graph_traversal/" class="md-nav__link">
|
||||
10.3. 图的遍历
|
||||
</a>
|
||||
</li>
|
||||
|
||||
@@ -1416,7 +1352,7 @@
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../chapter_searching/summary/" class="md-nav__link">
|
||||
<a href="../../chapter_graph/summary/" class="md-nav__link">
|
||||
10.4. 小结
|
||||
</a>
|
||||
</li>
|
||||
@@ -1558,7 +1494,7 @@
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../chapter_sorting/bucket_sort/" class="md-nav__link">
|
||||
11.6. 桶排序(New)
|
||||
11.6. 桶排序
|
||||
</a>
|
||||
</li>
|
||||
|
||||
@@ -1572,7 +1508,7 @@
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../chapter_sorting/counting_sort/" class="md-nav__link">
|
||||
11.7. 计数排序(New)
|
||||
11.7. 计数排序
|
||||
</a>
|
||||
</li>
|
||||
|
||||
@@ -1586,7 +1522,7 @@
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../chapter_sorting/radix_sort/" class="md-nav__link">
|
||||
11.8. 基数排序(New)
|
||||
11.8. 基数排序
|
||||
</a>
|
||||
</li>
|
||||
|
||||
@@ -1634,17 +1570,21 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<label class="md-nav__link" for="__nav_13" id="__nav_13_label" tabindex="0">
|
||||
12. 回溯算法
|
||||
12. 搜索算法
|
||||
<span class="md-nav__icon md-icon"></span>
|
||||
</label>
|
||||
|
||||
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_13_label" aria-expanded="false">
|
||||
<label class="md-nav__title" for="__nav_13">
|
||||
<span class="md-nav__icon md-icon"></span>
|
||||
12. 回溯算法
|
||||
12. 搜索算法
|
||||
</label>
|
||||
<ul class="md-nav__list" data-md-scrollfix>
|
||||
|
||||
@@ -1654,8 +1594,36 @@
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../chapter_backtracking/backtracking_algorithm/" class="md-nav__link">
|
||||
12.1. 回溯算法(New)
|
||||
<a href="../../chapter_searching/searching_algorithm_revisited/" class="md-nav__link">
|
||||
12.1. 搜索算法(New)
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../chapter_searching/replace_linear_by_hashing/" class="md-nav__link">
|
||||
12.2. 哈希优化策略
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../chapter_searching/summary/" class="md-nav__link">
|
||||
12.3. 小结
|
||||
</a>
|
||||
</li>
|
||||
|
||||
@@ -1689,19 +1657,17 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<label class="md-nav__link" for="__nav_14" id="__nav_14_label" tabindex="0">
|
||||
13. 附录
|
||||
13. 回溯算法
|
||||
<span class="md-nav__icon md-icon"></span>
|
||||
</label>
|
||||
|
||||
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_14_label" aria-expanded="false">
|
||||
<label class="md-nav__title" for="__nav_14">
|
||||
<span class="md-nav__icon md-icon"></span>
|
||||
13. 附录
|
||||
13. 回溯算法
|
||||
</label>
|
||||
<ul class="md-nav__list" data-md-scrollfix>
|
||||
|
||||
@@ -1711,22 +1677,8 @@
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../chapter_appendix/installation/" class="md-nav__link">
|
||||
13.1. 编程环境安装
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../chapter_appendix/contribution/" class="md-nav__link">
|
||||
13.2. 一起参与创作
|
||||
<a href="../../chapter_backtracking/backtracking_algorithm/" class="md-nav__link">
|
||||
13.1. 回溯算法(New)
|
||||
</a>
|
||||
</li>
|
||||
|
||||
@@ -1759,6 +1711,77 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<label class="md-nav__link" for="__nav_15" id="__nav_15_label" tabindex="0">
|
||||
14. 附录
|
||||
<span class="md-nav__icon md-icon"></span>
|
||||
</label>
|
||||
|
||||
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_15_label" aria-expanded="false">
|
||||
<label class="md-nav__title" for="__nav_15">
|
||||
<span class="md-nav__icon md-icon"></span>
|
||||
14. 附录
|
||||
</label>
|
||||
<ul class="md-nav__list" data-md-scrollfix>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../chapter_appendix/installation/" class="md-nav__link">
|
||||
14.1. 编程环境安装
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../chapter_appendix/contribution/" class="md-nav__link">
|
||||
14.2. 一起参与创作
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
</ul>
|
||||
</nav>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item md-nav__item--section md-nav__item--nested">
|
||||
|
||||
|
||||
|
||||
|
||||
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_16" >
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -1771,8 +1794,8 @@
|
||||
|
||||
</div>
|
||||
|
||||
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_15_label" aria-expanded="false">
|
||||
<label class="md-nav__title" for="__nav_15">
|
||||
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_16_label" aria-expanded="false">
|
||||
<label class="md-nav__title" for="__nav_16">
|
||||
<span class="md-nav__icon md-icon"></span>
|
||||
参考文献
|
||||
</label>
|
||||
@@ -1813,25 +1836,25 @@
|
||||
<ul class="md-nav__list" data-md-component="toc" data-md-scrollfix>
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="#711" class="md-nav__link">
|
||||
7.1.1. 二叉树常见术语
|
||||
<a href="#811" class="md-nav__link">
|
||||
8.1.1. 二叉树常见术语
|
||||
</a>
|
||||
|
||||
</li>
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="#712" class="md-nav__link">
|
||||
7.1.2. 二叉树基本操作
|
||||
<a href="#812" class="md-nav__link">
|
||||
8.1.2. 二叉树基本操作
|
||||
</a>
|
||||
|
||||
</li>
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="#713" class="md-nav__link">
|
||||
7.1.3. 常见二叉树类型
|
||||
<a href="#813" class="md-nav__link">
|
||||
8.1.3. 常见二叉树类型
|
||||
</a>
|
||||
|
||||
<nav class="md-nav" aria-label="7.1.3. 常见二叉树类型">
|
||||
<nav class="md-nav" aria-label="8.1.3. 常见二叉树类型">
|
||||
<ul class="md-nav__list">
|
||||
|
||||
<li class="md-nav__item">
|
||||
@@ -1868,15 +1891,15 @@
|
||||
</li>
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="#714" class="md-nav__link">
|
||||
7.1.4. 二叉树的退化
|
||||
<a href="#814" class="md-nav__link">
|
||||
8.1.4. 二叉树的退化
|
||||
</a>
|
||||
|
||||
</li>
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="#715" class="md-nav__link">
|
||||
7.1.5. 二叉树表示方式 *
|
||||
<a href="#815" class="md-nav__link">
|
||||
8.1.5. 二叉树表示方式 *
|
||||
</a>
|
||||
|
||||
</li>
|
||||
@@ -1904,7 +1927,7 @@
|
||||
|
||||
|
||||
|
||||
<h1 id="71">7.1. 二叉树<a class="headerlink" href="#71" title="Permanent link">¶</a></h1>
|
||||
<h1 id="81">8.1. 二叉树<a class="headerlink" href="#81" title="Permanent link">¶</a></h1>
|
||||
<p>「二叉树 Binary Tree」是一种非线性数据结构,代表着祖先与后代之间的派生关系,体现着“一分为二”的分治逻辑。与链表类似,二叉树的基本单元是节点,每个节点包含一个「值」和两个「指针」。</p>
|
||||
<div class="tabbed-set tabbed-alternate" data-tabs="1:10"><input checked="checked" id="__tabbed_1_1" name="__tabbed_1" type="radio" /><input id="__tabbed_1_2" name="__tabbed_1" type="radio" /><input id="__tabbed_1_3" name="__tabbed_1" type="radio" /><input id="__tabbed_1_4" name="__tabbed_1" type="radio" /><input id="__tabbed_1_5" name="__tabbed_1" type="radio" /><input id="__tabbed_1_6" name="__tabbed_1" type="radio" /><input id="__tabbed_1_7" name="__tabbed_1" type="radio" /><input id="__tabbed_1_8" name="__tabbed_1" type="radio" /><input id="__tabbed_1_9" name="__tabbed_1" type="radio" /><input id="__tabbed_1_10" name="__tabbed_1" type="radio" /><div class="tabbed-labels"><label for="__tabbed_1_1">Java</label><label for="__tabbed_1_2">C++</label><label for="__tabbed_1_3">Python</label><label for="__tabbed_1_4">Go</label><label for="__tabbed_1_5">JavaScript</label><label for="__tabbed_1_6">TypeScript</label><label for="__tabbed_1_7">C</label><label for="__tabbed_1_8">C#</label><label for="__tabbed_1_9">Swift</label><label for="__tabbed_1_10">Zig</label></div>
|
||||
<div class="tabbed-content">
|
||||
@@ -2016,7 +2039,7 @@
|
||||
<p><img alt="父节点、子节点、子树" src="../binary_tree.assets/binary_tree_definition.png" /></p>
|
||||
<p align="center"> Fig. 父节点、子节点、子树 </p>
|
||||
|
||||
<h2 id="711">7.1.1. 二叉树常见术语<a class="headerlink" href="#711" title="Permanent link">¶</a></h2>
|
||||
<h2 id="811">8.1.1. 二叉树常见术语<a class="headerlink" href="#811" title="Permanent link">¶</a></h2>
|
||||
<p>二叉树涉及的术语较多,建议尽量理解并记住。</p>
|
||||
<ul>
|
||||
<li>「根节点 Root Node」:位于二叉树顶层的节点,没有父节点;</li>
|
||||
@@ -2035,7 +2058,7 @@
|
||||
<p class="admonition-title">高度与深度的定义</p>
|
||||
<p>请注意,我们通常将「高度」和「深度」定义为“走过边的数量”,但有些题目或教材可能会将其定义为“走过节点的数量”。在这种情况下,高度和深度都需要加 1 。</p>
|
||||
</div>
|
||||
<h2 id="712">7.1.2. 二叉树基本操作<a class="headerlink" href="#712" title="Permanent link">¶</a></h2>
|
||||
<h2 id="812">8.1.2. 二叉树基本操作<a class="headerlink" href="#812" title="Permanent link">¶</a></h2>
|
||||
<p><strong>初始化二叉树</strong>。与链表类似,首先初始化节点,然后构建引用指向(即指针)。</p>
|
||||
<div class="tabbed-set tabbed-alternate" data-tabs="2:10"><input checked="checked" id="__tabbed_2_1" name="__tabbed_2" type="radio" /><input id="__tabbed_2_2" name="__tabbed_2" type="radio" /><input id="__tabbed_2_3" name="__tabbed_2" type="radio" /><input id="__tabbed_2_4" name="__tabbed_2" type="radio" /><input id="__tabbed_2_5" name="__tabbed_2" type="radio" /><input id="__tabbed_2_6" name="__tabbed_2" type="radio" /><input id="__tabbed_2_7" name="__tabbed_2" type="radio" /><input id="__tabbed_2_8" name="__tabbed_2" type="radio" /><input id="__tabbed_2_9" name="__tabbed_2" type="radio" /><input id="__tabbed_2_10" name="__tabbed_2" type="radio" /><div class="tabbed-labels"><label for="__tabbed_2_1">Java</label><label for="__tabbed_2_2">C++</label><label for="__tabbed_2_3">Python</label><label for="__tabbed_2_4">Go</label><label for="__tabbed_2_5">JavaScript</label><label for="__tabbed_2_6">TypeScript</label><label for="__tabbed_2_7">C</label><label for="__tabbed_2_8">C#</label><label for="__tabbed_2_9">Swift</label><label for="__tabbed_2_10">Zig</label></div>
|
||||
<div class="tabbed-content">
|
||||
@@ -2265,7 +2288,7 @@
|
||||
<p class="admonition-title">Note</p>
|
||||
<p>需要注意的是,插入节点可能会改变二叉树的原有逻辑结构,而删除节点通常意味着删除该节点及其所有子树。因此,在二叉树中,插入与删除操作通常是由一套操作配合完成的,以实现有实际意义的操作。</p>
|
||||
</div>
|
||||
<h2 id="713">7.1.3. 常见二叉树类型<a class="headerlink" href="#713" title="Permanent link">¶</a></h2>
|
||||
<h2 id="813">8.1.3. 常见二叉树类型<a class="headerlink" href="#813" title="Permanent link">¶</a></h2>
|
||||
<h3 id="_1">完美二叉树<a class="headerlink" href="#_1" title="Permanent link">¶</a></h3>
|
||||
<p>「完美二叉树 Perfect Binary Tree」除了最底层外,其余所有层的节点都被完全填满。在完美二叉树中,叶节点的度为 <span class="arithmatex">\(0\)</span> ,其余所有节点的度都为 <span class="arithmatex">\(2\)</span> ;若树高度为 <span class="arithmatex">\(h\)</span> ,则节点总数为 <span class="arithmatex">\(2^{h+1} - 1\)</span> ,呈现标准的指数级关系,反映了自然界中常见的细胞分裂现象。</p>
|
||||
<div class="admonition tip">
|
||||
@@ -2290,7 +2313,7 @@
|
||||
<p><img alt="平衡二叉树" src="../binary_tree.assets/balanced_binary_tree.png" /></p>
|
||||
<p align="center"> Fig. 平衡二叉树 </p>
|
||||
|
||||
<h2 id="714">7.1.4. 二叉树的退化<a class="headerlink" href="#714" title="Permanent link">¶</a></h2>
|
||||
<h2 id="814">8.1.4. 二叉树的退化<a class="headerlink" href="#814" title="Permanent link">¶</a></h2>
|
||||
<p>当二叉树的每层节点都被填满时,达到「完美二叉树」;而当所有节点都偏向一侧时,二叉树退化为「链表」。</p>
|
||||
<ul>
|
||||
<li>完美二叉树是理想情况,可以充分发挥二叉树“分治”的优势;</li>
|
||||
@@ -2333,7 +2356,7 @@
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<h2 id="715">7.1.5. 二叉树表示方式 *<a class="headerlink" href="#715" title="Permanent link">¶</a></h2>
|
||||
<h2 id="815">8.1.5. 二叉树表示方式 *<a class="headerlink" href="#815" title="Permanent link">¶</a></h2>
|
||||
<p>我们通常使用二叉树的「链表表示」,即存储单位为节点 <code>TreeNode</code> ,节点之间通过指针相连接。本文前述示例代码展示了二叉树在链表表示下的各项基本操作。</p>
|
||||
<p>那么,能否用「数组」来表示二叉树呢?答案是肯定的。先来分析一个简单案例,给定一个「完美二叉树」,将节点按照层序遍历的顺序编号(从 0 开始),那么可以推导得出父节点索引与子节点索引之间的“映射公式”:<strong>若节点的索引为 <span class="arithmatex">\(i\)</span> ,则该节点的左子节点索引为 <span class="arithmatex">\(2i + 1\)</span> ,右子节点索引为 <span class="arithmatex">\(2i + 2\)</span></strong> 。</p>
|
||||
<p><strong>本质上,映射公式的作用相当于链表中的指针</strong>。对于层序遍历序列中的任意节点,我们都可以使用映射公式来访问其子节点。因此,我们可以将二叉树的层序遍历序列存储到数组中,利用以上映射公式来表示二叉树。</p>
|
||||
@@ -2491,7 +2514,7 @@
|
||||
<nav class="md-footer__inner md-grid" aria-label="页脚" >
|
||||
|
||||
|
||||
<a href="../../chapter_hashing/summary/" class="md-footer__link md-footer__link--prev" aria-label="上一页: 6.3. &nbsp; 小结" rel="prev">
|
||||
<a href="../../chapter_hashing/summary/" 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>
|
||||
@@ -2500,20 +2523,20 @@
|
||||
上一页
|
||||
</span>
|
||||
<div class="md-ellipsis">
|
||||
6.3. 小结
|
||||
7.3. 小结
|
||||
</div>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
|
||||
|
||||
<a href="../binary_tree_traversal/" class="md-footer__link md-footer__link--next" aria-label="下一页: 7.2. &nbsp; 二叉树遍历" rel="next">
|
||||
<a href="../binary_tree_traversal/" class="md-footer__link md-footer__link--next" aria-label="下一页: 8.2. &nbsp; 二叉树遍历" rel="next">
|
||||
<div class="md-footer__title">
|
||||
<span class="md-footer__direction">
|
||||
下一页
|
||||
</span>
|
||||
<div class="md-ellipsis">
|
||||
7.2. 二叉树遍历
|
||||
8.2. 二叉树遍历
|
||||
</div>
|
||||
</div>
|
||||
<div class="md-footer__button md-icon">
|
||||
|
||||
@@ -25,7 +25,7 @@
|
||||
|
||||
|
||||
|
||||
<title>7.2. 二叉树遍历 - Hello 算法</title>
|
||||
<title>8.2. 二叉树遍历 - Hello 算法</title>
|
||||
|
||||
|
||||
|
||||
@@ -79,7 +79,7 @@
|
||||
<div data-md-component="skip">
|
||||
|
||||
|
||||
<a href="#72" class="md-skip">
|
||||
<a href="#82" class="md-skip">
|
||||
跳转至
|
||||
</a>
|
||||
|
||||
@@ -113,7 +113,7 @@
|
||||
<div class="md-header__topic" data-md-component="header-topic">
|
||||
<span class="md-ellipsis">
|
||||
|
||||
7.2. 二叉树遍历
|
||||
8.2. 二叉树遍历
|
||||
|
||||
</span>
|
||||
</div>
|
||||
@@ -441,8 +441,6 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<label class="md-nav__link" for="__nav_3" id="__nav_3_label" tabindex="0">
|
||||
@@ -504,23 +502,9 @@
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../chapter_computational_complexity/space_time_tradeoff/" class="md-nav__link">
|
||||
2.4. 权衡时间与空间
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../chapter_computational_complexity/summary/" class="md-nav__link">
|
||||
2.5. 小结
|
||||
2.4. 小结
|
||||
</a>
|
||||
</li>
|
||||
|
||||
@@ -847,21 +831,76 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<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>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../chapter_binary_search/binary_search/" class="md-nav__link">
|
||||
6.1. 二分查找
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
</ul>
|
||||
</nav>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item md-nav__item--section md-nav__item--nested">
|
||||
|
||||
|
||||
|
||||
|
||||
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_8" >
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<label class="md-nav__link" for="__nav_8" id="__nav_8_label" tabindex="0">
|
||||
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="false">
|
||||
<label class="md-nav__title" for="__nav_8">
|
||||
<span class="md-nav__icon md-icon"></span>
|
||||
7. 散列表
|
||||
</label>
|
||||
<ul class="md-nav__list" data-md-scrollfix>
|
||||
|
||||
@@ -872,7 +911,7 @@
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../chapter_hashing/hash_map/" class="md-nav__link">
|
||||
6.1. 哈希表
|
||||
7.1. 哈希表
|
||||
</a>
|
||||
</li>
|
||||
|
||||
@@ -886,7 +925,7 @@
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../chapter_hashing/hash_collision/" class="md-nav__link">
|
||||
6.2. 哈希冲突处理
|
||||
7.2. 哈希冲突处理
|
||||
</a>
|
||||
</li>
|
||||
|
||||
@@ -900,7 +939,7 @@
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../chapter_hashing/summary/" class="md-nav__link">
|
||||
6.3. 小结
|
||||
7.3. 小结
|
||||
</a>
|
||||
</li>
|
||||
|
||||
@@ -930,7 +969,7 @@
|
||||
|
||||
|
||||
|
||||
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_8" checked>
|
||||
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_9" checked>
|
||||
|
||||
|
||||
|
||||
@@ -946,15 +985,15 @@
|
||||
|
||||
|
||||
|
||||
<label class="md-nav__link" for="__nav_8" id="__nav_8_label" tabindex="0">
|
||||
7. 树
|
||||
<label class="md-nav__link" for="__nav_9" id="__nav_9_label" tabindex="0">
|
||||
8. 树
|
||||
<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">
|
||||
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_9_label" aria-expanded="true">
|
||||
<label class="md-nav__title" for="__nav_9">
|
||||
<span class="md-nav__icon md-icon"></span>
|
||||
7. 树
|
||||
8. 树
|
||||
</label>
|
||||
<ul class="md-nav__list" data-md-scrollfix>
|
||||
|
||||
@@ -965,7 +1004,7 @@
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../binary_tree/" class="md-nav__link">
|
||||
7.1. 二叉树
|
||||
8.1. 二叉树
|
||||
</a>
|
||||
</li>
|
||||
|
||||
@@ -988,12 +1027,12 @@
|
||||
|
||||
|
||||
<label class="md-nav__link md-nav__link--active" for="__toc">
|
||||
7.2. 二叉树遍历
|
||||
8.2. 二叉树遍历
|
||||
<span class="md-nav__icon md-icon"></span>
|
||||
</label>
|
||||
|
||||
<a href="./" class="md-nav__link md-nav__link--active">
|
||||
7.2. 二叉树遍历
|
||||
8.2. 二叉树遍历
|
||||
</a>
|
||||
|
||||
|
||||
@@ -1012,11 +1051,11 @@
|
||||
<ul class="md-nav__list" data-md-component="toc" data-md-scrollfix>
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="#721" class="md-nav__link">
|
||||
7.2.1. 层序遍历
|
||||
<a href="#821" class="md-nav__link">
|
||||
8.2.1. 层序遍历
|
||||
</a>
|
||||
|
||||
<nav class="md-nav" aria-label="7.2.1. 层序遍历">
|
||||
<nav class="md-nav" aria-label="8.2.1. 层序遍历">
|
||||
<ul class="md-nav__list">
|
||||
|
||||
<li class="md-nav__item">
|
||||
@@ -1039,11 +1078,11 @@
|
||||
</li>
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="#722" class="md-nav__link">
|
||||
7.2.2. 前序、中序、后序遍历
|
||||
<a href="#822" class="md-nav__link">
|
||||
8.2.2. 前序、中序、后序遍历
|
||||
</a>
|
||||
|
||||
<nav class="md-nav" aria-label="7.2.2. 前序、中序、后序遍历">
|
||||
<nav class="md-nav" aria-label="8.2.2. 前序、中序、后序遍历">
|
||||
<ul class="md-nav__list">
|
||||
|
||||
<li class="md-nav__item">
|
||||
@@ -1081,7 +1120,7 @@
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../binary_search_tree/" class="md-nav__link">
|
||||
7.3. 二叉搜索树
|
||||
8.3. 二叉搜索树
|
||||
</a>
|
||||
</li>
|
||||
|
||||
@@ -1095,7 +1134,7 @@
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../avl_tree/" class="md-nav__link">
|
||||
7.4. AVL 树 *
|
||||
8.4. AVL 树 *
|
||||
</a>
|
||||
</li>
|
||||
|
||||
@@ -1109,94 +1148,7 @@
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../summary/" class="md-nav__link">
|
||||
7.5. 小结
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
</ul>
|
||||
</nav>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item md-nav__item--section md-nav__item--nested">
|
||||
|
||||
|
||||
|
||||
|
||||
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_9" >
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<label class="md-nav__link" for="__nav_9" id="__nav_9_label" tabindex="0">
|
||||
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. 堆
|
||||
</label>
|
||||
<ul class="md-nav__list" data-md-scrollfix>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../chapter_heap/heap/" class="md-nav__link">
|
||||
8.1. 堆
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../chapter_heap/build_heap/" class="md-nav__link">
|
||||
8.2. 建堆操作 *
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../chapter_heap/summary/" class="md-nav__link">
|
||||
8.3. 小结
|
||||
8.5. 小结
|
||||
</a>
|
||||
</li>
|
||||
|
||||
@@ -1234,19 +1186,17 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<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>
|
||||
|
||||
@@ -1256,8 +1206,8 @@
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../chapter_graph/graph/" class="md-nav__link">
|
||||
9.1. 图
|
||||
<a href="../../chapter_heap/heap/" class="md-nav__link">
|
||||
9.1. 堆
|
||||
</a>
|
||||
</li>
|
||||
|
||||
@@ -1270,8 +1220,8 @@
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../chapter_graph/graph_operations/" class="md-nav__link">
|
||||
9.2. 图基础操作
|
||||
<a href="../../chapter_heap/build_heap/" class="md-nav__link">
|
||||
9.2. 建堆操作 *
|
||||
</a>
|
||||
</li>
|
||||
|
||||
@@ -1284,22 +1234,8 @@
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../chapter_graph/graph_traversal/" class="md-nav__link">
|
||||
9.3. 图的遍历
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../chapter_graph/summary/" class="md-nav__link">
|
||||
9.4. 小结
|
||||
<a href="../../chapter_heap/summary/" class="md-nav__link">
|
||||
9.3. 小结
|
||||
</a>
|
||||
</li>
|
||||
|
||||
@@ -1342,14 +1278,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>
|
||||
|
||||
@@ -1359,8 +1295,8 @@
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../chapter_searching/linear_search/" class="md-nav__link">
|
||||
10.1. 线性查找
|
||||
<a href="../../chapter_graph/graph/" class="md-nav__link">
|
||||
10.1. 图
|
||||
</a>
|
||||
</li>
|
||||
|
||||
@@ -1373,8 +1309,8 @@
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../chapter_searching/binary_search/" class="md-nav__link">
|
||||
10.2. 二分查找
|
||||
<a href="../../chapter_graph/graph_operations/" class="md-nav__link">
|
||||
10.2. 图基础操作
|
||||
</a>
|
||||
</li>
|
||||
|
||||
@@ -1387,8 +1323,8 @@
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../chapter_searching/hashing_search/" class="md-nav__link">
|
||||
10.3. 哈希查找
|
||||
<a href="../../chapter_graph/graph_traversal/" class="md-nav__link">
|
||||
10.3. 图的遍历
|
||||
</a>
|
||||
</li>
|
||||
|
||||
@@ -1401,7 +1337,7 @@
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../chapter_searching/summary/" class="md-nav__link">
|
||||
<a href="../../chapter_graph/summary/" class="md-nav__link">
|
||||
10.4. 小结
|
||||
</a>
|
||||
</li>
|
||||
@@ -1543,7 +1479,7 @@
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../chapter_sorting/bucket_sort/" class="md-nav__link">
|
||||
11.6. 桶排序(New)
|
||||
11.6. 桶排序
|
||||
</a>
|
||||
</li>
|
||||
|
||||
@@ -1557,7 +1493,7 @@
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../chapter_sorting/counting_sort/" class="md-nav__link">
|
||||
11.7. 计数排序(New)
|
||||
11.7. 计数排序
|
||||
</a>
|
||||
</li>
|
||||
|
||||
@@ -1571,7 +1507,7 @@
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../chapter_sorting/radix_sort/" class="md-nav__link">
|
||||
11.8. 基数排序(New)
|
||||
11.8. 基数排序
|
||||
</a>
|
||||
</li>
|
||||
|
||||
@@ -1619,17 +1555,21 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<label class="md-nav__link" for="__nav_13" id="__nav_13_label" tabindex="0">
|
||||
12. 回溯算法
|
||||
12. 搜索算法
|
||||
<span class="md-nav__icon md-icon"></span>
|
||||
</label>
|
||||
|
||||
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_13_label" aria-expanded="false">
|
||||
<label class="md-nav__title" for="__nav_13">
|
||||
<span class="md-nav__icon md-icon"></span>
|
||||
12. 回溯算法
|
||||
12. 搜索算法
|
||||
</label>
|
||||
<ul class="md-nav__list" data-md-scrollfix>
|
||||
|
||||
@@ -1639,8 +1579,36 @@
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../chapter_backtracking/backtracking_algorithm/" class="md-nav__link">
|
||||
12.1. 回溯算法(New)
|
||||
<a href="../../chapter_searching/searching_algorithm_revisited/" class="md-nav__link">
|
||||
12.1. 搜索算法(New)
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../chapter_searching/replace_linear_by_hashing/" class="md-nav__link">
|
||||
12.2. 哈希优化策略
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../chapter_searching/summary/" class="md-nav__link">
|
||||
12.3. 小结
|
||||
</a>
|
||||
</li>
|
||||
|
||||
@@ -1674,19 +1642,17 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<label class="md-nav__link" for="__nav_14" id="__nav_14_label" tabindex="0">
|
||||
13. 附录
|
||||
13. 回溯算法
|
||||
<span class="md-nav__icon md-icon"></span>
|
||||
</label>
|
||||
|
||||
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_14_label" aria-expanded="false">
|
||||
<label class="md-nav__title" for="__nav_14">
|
||||
<span class="md-nav__icon md-icon"></span>
|
||||
13. 附录
|
||||
13. 回溯算法
|
||||
</label>
|
||||
<ul class="md-nav__list" data-md-scrollfix>
|
||||
|
||||
@@ -1696,22 +1662,8 @@
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../chapter_appendix/installation/" class="md-nav__link">
|
||||
13.1. 编程环境安装
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../chapter_appendix/contribution/" class="md-nav__link">
|
||||
13.2. 一起参与创作
|
||||
<a href="../../chapter_backtracking/backtracking_algorithm/" class="md-nav__link">
|
||||
13.1. 回溯算法(New)
|
||||
</a>
|
||||
</li>
|
||||
|
||||
@@ -1744,6 +1696,77 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<label class="md-nav__link" for="__nav_15" id="__nav_15_label" tabindex="0">
|
||||
14. 附录
|
||||
<span class="md-nav__icon md-icon"></span>
|
||||
</label>
|
||||
|
||||
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_15_label" aria-expanded="false">
|
||||
<label class="md-nav__title" for="__nav_15">
|
||||
<span class="md-nav__icon md-icon"></span>
|
||||
14. 附录
|
||||
</label>
|
||||
<ul class="md-nav__list" data-md-scrollfix>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../chapter_appendix/installation/" class="md-nav__link">
|
||||
14.1. 编程环境安装
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../chapter_appendix/contribution/" class="md-nav__link">
|
||||
14.2. 一起参与创作
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
</ul>
|
||||
</nav>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item md-nav__item--section md-nav__item--nested">
|
||||
|
||||
|
||||
|
||||
|
||||
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_16" >
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -1756,8 +1779,8 @@
|
||||
|
||||
</div>
|
||||
|
||||
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_15_label" aria-expanded="false">
|
||||
<label class="md-nav__title" for="__nav_15">
|
||||
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_16_label" aria-expanded="false">
|
||||
<label class="md-nav__title" for="__nav_16">
|
||||
<span class="md-nav__icon md-icon"></span>
|
||||
参考文献
|
||||
</label>
|
||||
@@ -1798,11 +1821,11 @@
|
||||
<ul class="md-nav__list" data-md-component="toc" data-md-scrollfix>
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="#721" class="md-nav__link">
|
||||
7.2.1. 层序遍历
|
||||
<a href="#821" class="md-nav__link">
|
||||
8.2.1. 层序遍历
|
||||
</a>
|
||||
|
||||
<nav class="md-nav" aria-label="7.2.1. 层序遍历">
|
||||
<nav class="md-nav" aria-label="8.2.1. 层序遍历">
|
||||
<ul class="md-nav__list">
|
||||
|
||||
<li class="md-nav__item">
|
||||
@@ -1825,11 +1848,11 @@
|
||||
</li>
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="#722" class="md-nav__link">
|
||||
7.2.2. 前序、中序、后序遍历
|
||||
<a href="#822" class="md-nav__link">
|
||||
8.2.2. 前序、中序、后序遍历
|
||||
</a>
|
||||
|
||||
<nav class="md-nav" aria-label="7.2.2. 前序、中序、后序遍历">
|
||||
<nav class="md-nav" aria-label="8.2.2. 前序、中序、后序遍历">
|
||||
<ul class="md-nav__list">
|
||||
|
||||
<li class="md-nav__item">
|
||||
@@ -1874,10 +1897,10 @@
|
||||
|
||||
|
||||
|
||||
<h1 id="72">7.2. 二叉树遍历<a class="headerlink" href="#72" title="Permanent link">¶</a></h1>
|
||||
<h1 id="82">8.2. 二叉树遍历<a class="headerlink" href="#82" title="Permanent link">¶</a></h1>
|
||||
<p>从物理结构的角度来看,树是一种基于链表的数据结构,因此其遍历方式是通过指针逐个访问节点。然而,树是一种非线性数据结构,这使得遍历树比遍历链表更加复杂,需要借助搜索算法来实现。</p>
|
||||
<p>二叉树常见的遍历方式包括层序遍历、前序遍历、中序遍历和后序遍历等。</p>
|
||||
<h2 id="721">7.2.1. 层序遍历<a class="headerlink" href="#721" title="Permanent link">¶</a></h2>
|
||||
<h2 id="821">8.2.1. 层序遍历<a class="headerlink" href="#821" title="Permanent link">¶</a></h2>
|
||||
<p>「层序遍历 Level-Order Traversal」从顶部到底部逐层遍历二叉树,并在每一层按照从左到右的顺序访问节点。</p>
|
||||
<p>层序遍历本质上属于「广度优先搜索 Breadth-First Traversal」,它体现了一种“一圈一圈向外扩展”的逐层搜索方式。</p>
|
||||
<p><img alt="二叉树的层序遍历" src="../binary_tree_traversal.assets/binary_tree_bfs.png" /></p>
|
||||
@@ -2094,7 +2117,7 @@
|
||||
<h3 id="_2">复杂度分析<a class="headerlink" href="#_2" title="Permanent link">¶</a></h3>
|
||||
<p><strong>时间复杂度</strong>:所有节点被访问一次,使用 <span class="arithmatex">\(O(n)\)</span> 时间,其中 <span class="arithmatex">\(n\)</span> 为节点数量。</p>
|
||||
<p><strong>空间复杂度</strong>:在最差情况下,即满二叉树时,遍历到最底层之前,队列中最多同时存在 <span class="arithmatex">\(\frac{n + 1}{2}\)</span> 个节点,占用 <span class="arithmatex">\(O(n)\)</span> 空间。</p>
|
||||
<h2 id="722">7.2.2. 前序、中序、后序遍历<a class="headerlink" href="#722" title="Permanent link">¶</a></h2>
|
||||
<h2 id="822">8.2.2. 前序、中序、后序遍历<a class="headerlink" href="#822" title="Permanent link">¶</a></h2>
|
||||
<p>相应地,前序、中序和后序遍历都属于「深度优先遍历 Depth-First Traversal」,它体现了一种“先走到尽头,再回溯继续”的遍历方式。</p>
|
||||
<p>如下图所示,左侧是深度优先遍历的示意图,右上方是对应的递归实现代码。深度优先遍历就像是绕着整个二叉树的外围“走”一圈,在这个过程中,在每个节点都会遇到三个位置,分别对应前序遍历、中序遍历和后序遍历。</p>
|
||||
<p><img alt="二叉搜索树的前、中、后序遍历" src="../binary_tree_traversal.assets/binary_tree_dfs.png" /></p>
|
||||
@@ -2513,7 +2536,7 @@
|
||||
<nav class="md-footer__inner md-grid" aria-label="页脚" >
|
||||
|
||||
|
||||
<a href="../binary_tree/" class="md-footer__link md-footer__link--prev" aria-label="上一页: 7.1. &nbsp; 二叉树" rel="prev">
|
||||
<a href="../binary_tree/" class="md-footer__link md-footer__link--prev" aria-label="上一页: 8.1. &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>
|
||||
@@ -2522,20 +2545,20 @@
|
||||
上一页
|
||||
</span>
|
||||
<div class="md-ellipsis">
|
||||
7.1. 二叉树
|
||||
8.1. 二叉树
|
||||
</div>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
|
||||
|
||||
<a href="../binary_search_tree/" class="md-footer__link md-footer__link--next" aria-label="下一页: 7.3. &nbsp; 二叉搜索树" rel="next">
|
||||
<a href="../binary_search_tree/" class="md-footer__link md-footer__link--next" aria-label="下一页: 8.3. &nbsp; 二叉搜索树" rel="next">
|
||||
<div class="md-footer__title">
|
||||
<span class="md-footer__direction">
|
||||
下一页
|
||||
</span>
|
||||
<div class="md-ellipsis">
|
||||
7.3. 二叉搜索树
|
||||
8.3. 二叉搜索树
|
||||
</div>
|
||||
</div>
|
||||
<div class="md-footer__button md-icon">
|
||||
|
||||
+217
-194
@@ -25,7 +25,7 @@
|
||||
|
||||
|
||||
|
||||
<title>7.5. 小结 - Hello 算法</title>
|
||||
<title>8.5. 小结 - Hello 算法</title>
|
||||
|
||||
|
||||
|
||||
@@ -79,7 +79,7 @@
|
||||
<div data-md-component="skip">
|
||||
|
||||
|
||||
<a href="#75" class="md-skip">
|
||||
<a href="#85" class="md-skip">
|
||||
跳转至
|
||||
</a>
|
||||
|
||||
@@ -113,7 +113,7 @@
|
||||
<div class="md-header__topic" data-md-component="header-topic">
|
||||
<span class="md-ellipsis">
|
||||
|
||||
7.5. 小结
|
||||
8.5. 小结
|
||||
|
||||
</span>
|
||||
</div>
|
||||
@@ -441,8 +441,6 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<label class="md-nav__link" for="__nav_3" id="__nav_3_label" tabindex="0">
|
||||
@@ -504,23 +502,9 @@
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../chapter_computational_complexity/space_time_tradeoff/" class="md-nav__link">
|
||||
2.4. 权衡时间与空间
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../chapter_computational_complexity/summary/" class="md-nav__link">
|
||||
2.5. 小结
|
||||
2.4. 小结
|
||||
</a>
|
||||
</li>
|
||||
|
||||
@@ -847,21 +831,76 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<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>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../chapter_binary_search/binary_search/" class="md-nav__link">
|
||||
6.1. 二分查找
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
</ul>
|
||||
</nav>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item md-nav__item--section md-nav__item--nested">
|
||||
|
||||
|
||||
|
||||
|
||||
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_8" >
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<label class="md-nav__link" for="__nav_8" id="__nav_8_label" tabindex="0">
|
||||
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="false">
|
||||
<label class="md-nav__title" for="__nav_8">
|
||||
<span class="md-nav__icon md-icon"></span>
|
||||
7. 散列表
|
||||
</label>
|
||||
<ul class="md-nav__list" data-md-scrollfix>
|
||||
|
||||
@@ -872,7 +911,7 @@
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../chapter_hashing/hash_map/" class="md-nav__link">
|
||||
6.1. 哈希表
|
||||
7.1. 哈希表
|
||||
</a>
|
||||
</li>
|
||||
|
||||
@@ -886,7 +925,7 @@
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../chapter_hashing/hash_collision/" class="md-nav__link">
|
||||
6.2. 哈希冲突处理
|
||||
7.2. 哈希冲突处理
|
||||
</a>
|
||||
</li>
|
||||
|
||||
@@ -900,7 +939,7 @@
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../chapter_hashing/summary/" class="md-nav__link">
|
||||
6.3. 小结
|
||||
7.3. 小结
|
||||
</a>
|
||||
</li>
|
||||
|
||||
@@ -930,7 +969,7 @@
|
||||
|
||||
|
||||
|
||||
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_8" checked>
|
||||
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_9" checked>
|
||||
|
||||
|
||||
|
||||
@@ -946,15 +985,15 @@
|
||||
|
||||
|
||||
|
||||
<label class="md-nav__link" for="__nav_8" id="__nav_8_label" tabindex="0">
|
||||
7. 树
|
||||
<label class="md-nav__link" for="__nav_9" id="__nav_9_label" tabindex="0">
|
||||
8. 树
|
||||
<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">
|
||||
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_9_label" aria-expanded="true">
|
||||
<label class="md-nav__title" for="__nav_9">
|
||||
<span class="md-nav__icon md-icon"></span>
|
||||
7. 树
|
||||
8. 树
|
||||
</label>
|
||||
<ul class="md-nav__list" data-md-scrollfix>
|
||||
|
||||
@@ -965,7 +1004,7 @@
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../binary_tree/" class="md-nav__link">
|
||||
7.1. 二叉树
|
||||
8.1. 二叉树
|
||||
</a>
|
||||
</li>
|
||||
|
||||
@@ -979,7 +1018,7 @@
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../binary_tree_traversal/" class="md-nav__link">
|
||||
7.2. 二叉树遍历
|
||||
8.2. 二叉树遍历
|
||||
</a>
|
||||
</li>
|
||||
|
||||
@@ -993,7 +1032,7 @@
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../binary_search_tree/" class="md-nav__link">
|
||||
7.3. 二叉搜索树
|
||||
8.3. 二叉搜索树
|
||||
</a>
|
||||
</li>
|
||||
|
||||
@@ -1007,7 +1046,7 @@
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../avl_tree/" class="md-nav__link">
|
||||
7.4. AVL 树 *
|
||||
8.4. AVL 树 *
|
||||
</a>
|
||||
</li>
|
||||
|
||||
@@ -1030,7 +1069,7 @@
|
||||
|
||||
|
||||
<a href="./" class="md-nav__link md-nav__link--active">
|
||||
7.5. 小结
|
||||
8.5. 小结
|
||||
</a>
|
||||
|
||||
</li>
|
||||
@@ -1054,93 +1093,6 @@
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item md-nav__item--section md-nav__item--nested">
|
||||
|
||||
|
||||
|
||||
|
||||
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_9" >
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<label class="md-nav__link" for="__nav_9" id="__nav_9_label" tabindex="0">
|
||||
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. 堆
|
||||
</label>
|
||||
<ul class="md-nav__list" data-md-scrollfix>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../chapter_heap/heap/" class="md-nav__link">
|
||||
8.1. 堆
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../chapter_heap/build_heap/" class="md-nav__link">
|
||||
8.2. 建堆操作 *
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../chapter_heap/summary/" class="md-nav__link">
|
||||
8.3. 小结
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
</ul>
|
||||
</nav>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item md-nav__item--section md-nav__item--nested">
|
||||
|
||||
|
||||
@@ -1156,19 +1108,17 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<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>
|
||||
|
||||
@@ -1178,8 +1128,8 @@
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../chapter_graph/graph/" class="md-nav__link">
|
||||
9.1. 图
|
||||
<a href="../../chapter_heap/heap/" class="md-nav__link">
|
||||
9.1. 堆
|
||||
</a>
|
||||
</li>
|
||||
|
||||
@@ -1192,8 +1142,8 @@
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../chapter_graph/graph_operations/" class="md-nav__link">
|
||||
9.2. 图基础操作
|
||||
<a href="../../chapter_heap/build_heap/" class="md-nav__link">
|
||||
9.2. 建堆操作 *
|
||||
</a>
|
||||
</li>
|
||||
|
||||
@@ -1206,22 +1156,8 @@
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../chapter_graph/graph_traversal/" class="md-nav__link">
|
||||
9.3. 图的遍历
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../chapter_graph/summary/" class="md-nav__link">
|
||||
9.4. 小结
|
||||
<a href="../../chapter_heap/summary/" class="md-nav__link">
|
||||
9.3. 小结
|
||||
</a>
|
||||
</li>
|
||||
|
||||
@@ -1264,14 +1200,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>
|
||||
|
||||
@@ -1281,8 +1217,8 @@
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../chapter_searching/linear_search/" class="md-nav__link">
|
||||
10.1. 线性查找
|
||||
<a href="../../chapter_graph/graph/" class="md-nav__link">
|
||||
10.1. 图
|
||||
</a>
|
||||
</li>
|
||||
|
||||
@@ -1295,8 +1231,8 @@
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../chapter_searching/binary_search/" class="md-nav__link">
|
||||
10.2. 二分查找
|
||||
<a href="../../chapter_graph/graph_operations/" class="md-nav__link">
|
||||
10.2. 图基础操作
|
||||
</a>
|
||||
</li>
|
||||
|
||||
@@ -1309,8 +1245,8 @@
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../chapter_searching/hashing_search/" class="md-nav__link">
|
||||
10.3. 哈希查找
|
||||
<a href="../../chapter_graph/graph_traversal/" class="md-nav__link">
|
||||
10.3. 图的遍历
|
||||
</a>
|
||||
</li>
|
||||
|
||||
@@ -1323,7 +1259,7 @@
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../chapter_searching/summary/" class="md-nav__link">
|
||||
<a href="../../chapter_graph/summary/" class="md-nav__link">
|
||||
10.4. 小结
|
||||
</a>
|
||||
</li>
|
||||
@@ -1465,7 +1401,7 @@
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../chapter_sorting/bucket_sort/" class="md-nav__link">
|
||||
11.6. 桶排序(New)
|
||||
11.6. 桶排序
|
||||
</a>
|
||||
</li>
|
||||
|
||||
@@ -1479,7 +1415,7 @@
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../chapter_sorting/counting_sort/" class="md-nav__link">
|
||||
11.7. 计数排序(New)
|
||||
11.7. 计数排序
|
||||
</a>
|
||||
</li>
|
||||
|
||||
@@ -1493,7 +1429,7 @@
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../chapter_sorting/radix_sort/" class="md-nav__link">
|
||||
11.8. 基数排序(New)
|
||||
11.8. 基数排序
|
||||
</a>
|
||||
</li>
|
||||
|
||||
@@ -1541,17 +1477,21 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<label class="md-nav__link" for="__nav_13" id="__nav_13_label" tabindex="0">
|
||||
12. 回溯算法
|
||||
12. 搜索算法
|
||||
<span class="md-nav__icon md-icon"></span>
|
||||
</label>
|
||||
|
||||
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_13_label" aria-expanded="false">
|
||||
<label class="md-nav__title" for="__nav_13">
|
||||
<span class="md-nav__icon md-icon"></span>
|
||||
12. 回溯算法
|
||||
12. 搜索算法
|
||||
</label>
|
||||
<ul class="md-nav__list" data-md-scrollfix>
|
||||
|
||||
@@ -1561,8 +1501,36 @@
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../chapter_backtracking/backtracking_algorithm/" class="md-nav__link">
|
||||
12.1. 回溯算法(New)
|
||||
<a href="../../chapter_searching/searching_algorithm_revisited/" class="md-nav__link">
|
||||
12.1. 搜索算法(New)
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../chapter_searching/replace_linear_by_hashing/" class="md-nav__link">
|
||||
12.2. 哈希优化策略
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../chapter_searching/summary/" class="md-nav__link">
|
||||
12.3. 小结
|
||||
</a>
|
||||
</li>
|
||||
|
||||
@@ -1596,19 +1564,17 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<label class="md-nav__link" for="__nav_14" id="__nav_14_label" tabindex="0">
|
||||
13. 附录
|
||||
13. 回溯算法
|
||||
<span class="md-nav__icon md-icon"></span>
|
||||
</label>
|
||||
|
||||
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_14_label" aria-expanded="false">
|
||||
<label class="md-nav__title" for="__nav_14">
|
||||
<span class="md-nav__icon md-icon"></span>
|
||||
13. 附录
|
||||
13. 回溯算法
|
||||
</label>
|
||||
<ul class="md-nav__list" data-md-scrollfix>
|
||||
|
||||
@@ -1618,22 +1584,8 @@
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../chapter_appendix/installation/" class="md-nav__link">
|
||||
13.1. 编程环境安装
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../chapter_appendix/contribution/" class="md-nav__link">
|
||||
13.2. 一起参与创作
|
||||
<a href="../../chapter_backtracking/backtracking_algorithm/" class="md-nav__link">
|
||||
13.1. 回溯算法(New)
|
||||
</a>
|
||||
</li>
|
||||
|
||||
@@ -1666,6 +1618,77 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<label class="md-nav__link" for="__nav_15" id="__nav_15_label" tabindex="0">
|
||||
14. 附录
|
||||
<span class="md-nav__icon md-icon"></span>
|
||||
</label>
|
||||
|
||||
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_15_label" aria-expanded="false">
|
||||
<label class="md-nav__title" for="__nav_15">
|
||||
<span class="md-nav__icon md-icon"></span>
|
||||
14. 附录
|
||||
</label>
|
||||
<ul class="md-nav__list" data-md-scrollfix>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../chapter_appendix/installation/" class="md-nav__link">
|
||||
14.1. 编程环境安装
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item">
|
||||
<a href="../../chapter_appendix/contribution/" class="md-nav__link">
|
||||
14.2. 一起参与创作
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
</ul>
|
||||
</nav>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li class="md-nav__item md-nav__item--section md-nav__item--nested">
|
||||
|
||||
|
||||
|
||||
|
||||
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_16" >
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -1678,8 +1701,8 @@
|
||||
|
||||
</div>
|
||||
|
||||
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_15_label" aria-expanded="false">
|
||||
<label class="md-nav__title" for="__nav_15">
|
||||
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_16_label" aria-expanded="false">
|
||||
<label class="md-nav__title" for="__nav_16">
|
||||
<span class="md-nav__icon md-icon"></span>
|
||||
参考文献
|
||||
</label>
|
||||
@@ -1734,7 +1757,7 @@
|
||||
|
||||
|
||||
|
||||
<h1 id="75">7.5. 小结<a class="headerlink" href="#75" title="Permanent link">¶</a></h1>
|
||||
<h1 id="85">8.5. 小结<a class="headerlink" href="#85" title="Permanent link">¶</a></h1>
|
||||
<ul>
|
||||
<li>二叉树是一种非线性数据结构,体现“一分为二”的分治逻辑。每个二叉树节点包含一个值以及两个指针,分别指向其左子节点和右子节点。</li>
|
||||
<li>对于二叉树中的某个节点,其左(右)子节点及其以下形成的树被称为该节点的左(右)子树。</li>
|
||||
@@ -1825,7 +1848,7 @@
|
||||
<nav class="md-footer__inner md-grid" aria-label="页脚" >
|
||||
|
||||
|
||||
<a href="../avl_tree/" class="md-footer__link md-footer__link--prev" aria-label="上一页: 7.4. &nbsp; AVL 树 *" rel="prev">
|
||||
<a href="../avl_tree/" class="md-footer__link md-footer__link--prev" aria-label="上一页: 8.4. &nbsp; AVL 树 *" 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>
|
||||
@@ -1834,20 +1857,20 @@
|
||||
上一页
|
||||
</span>
|
||||
<div class="md-ellipsis">
|
||||
7.4. AVL 树 *
|
||||
8.4. AVL 树 *
|
||||
</div>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
|
||||
|
||||
<a href="../../chapter_heap/heap/" class="md-footer__link md-footer__link--next" aria-label="下一页: 8.1. &nbsp; 堆" rel="next">
|
||||
<a href="../../chapter_heap/heap/" class="md-footer__link md-footer__link--next" aria-label="下一页: 9.1. &nbsp; 堆" rel="next">
|
||||
<div class="md-footer__title">
|
||||
<span class="md-footer__direction">
|
||||
下一页
|
||||
</span>
|
||||
<div class="md-ellipsis">
|
||||
8.1. 堆
|
||||
9.1. 堆
|
||||
</div>
|
||||
</div>
|
||||
<div class="md-footer__button md-icon">
|
||||
|
||||
Reference in New Issue
Block a user