This commit is contained in:
krahets 2023-02-26 19:22:59 +08:00
parent e82934bc32
commit 62d7f2c85d
19 changed files with 21 additions and 42 deletions

View File

@ -2483,7 +2483,6 @@
</div>
</div>
<p><img alt="常见链表种类" src="../linked_list.assets/linkedlist_common_types.png" /></p>
<p align="center"> Fig. 常见链表类型 </p>

View File

@ -1565,8 +1565,6 @@
<li>列表又称动态数组,是基于数组实现的一种数据结构,其保存了数组的优势,且可以灵活改变长度。列表的出现大大提升了数组的实用性,但副作用是会造成部分内存空间浪费。</li>
</ul>
<h2 id="441-vs">4.4.1. &nbsp; 数组 VS 链表<a class="headerlink" href="#441-vs" title="Permanent link">&para;</a></h2>
<p align="center"> Table. 数组与链表特点对比 </p>
<div class="center-table">
<table>
<thead>
@ -1604,8 +1602,6 @@
<p class="admonition-title">Tip</p>
<p>「缓存局部性Cache locality」涉及到了计算机操作系统在本书不做展开介绍建议有兴趣的同学 Google / Baidu 一下。</p>
</div>
<p align="center"> Table. 数组与链表操作时间复杂度 </p>
<div class="center-table">
<table>
<thead>

View File

@ -1598,7 +1598,7 @@
<div class="tabbed-set tabbed-alternate" data-tabs="1:5"><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" /><div class="tabbed-labels"><label for="__tabbed_1_1">初始化邻接矩阵</label><label for="__tabbed_1_2">添加边</label><label for="__tabbed_1_3">删除边</label><label for="__tabbed_1_4">添加顶点</label><label for="__tabbed_1_5">删除顶点</label></div>
<div class="tabbed-content">
<div class="tabbed-block">
<p><img alt="adjacency_matrix_initialization" src="../graph_operations.assets/adjacency_matrix_initialization.png" /></p>
<p><img alt="邻接矩阵的初始化、增删边、增删顶点" src="../graph_operations.assets/adjacency_matrix_initialization.png" /></p>
</div>
<div class="tabbed-block">
<p><img alt="adjacency_matrix_add_edge" src="../graph_operations.assets/adjacency_matrix_add_edge.png" /></p>
@ -2354,7 +2354,7 @@
<div class="tabbed-set tabbed-alternate" data-tabs="3:5"><input checked="checked" id="__tabbed_3_1" name="__tabbed_3" type="radio" /><input id="__tabbed_3_2" name="__tabbed_3" type="radio" /><input id="__tabbed_3_3" name="__tabbed_3" type="radio" /><input id="__tabbed_3_4" name="__tabbed_3" type="radio" /><input id="__tabbed_3_5" name="__tabbed_3" type="radio" /><div class="tabbed-labels"><label for="__tabbed_3_1">初始化邻接表</label><label for="__tabbed_3_2">添加边</label><label for="__tabbed_3_3">删除边</label><label for="__tabbed_3_4">添加顶点</label><label for="__tabbed_3_5">删除顶点</label></div>
<div class="tabbed-content">
<div class="tabbed-block">
<p><img alt="adjacency_list_initialization" src="../graph_operations.assets/adjacency_list_initialization.png" /></p>
<p><img alt="邻接表的初始化、增删边、增删顶点" src="../graph_operations.assets/adjacency_list_initialization.png" /></p>
</div>
<div class="tabbed-block">
<p><img alt="adjacency_list_add_edge" src="../graph_operations.assets/adjacency_list_add_edge.png" /></p>

View File

@ -1834,7 +1834,7 @@
<div class="tabbed-set tabbed-alternate" data-tabs="2:11"><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" /><input id="__tabbed_2_11" name="__tabbed_2" type="radio" /><div class="tabbed-labels"><label for="__tabbed_2_1">&lt;1&gt;</label><label for="__tabbed_2_2">&lt;2&gt;</label><label for="__tabbed_2_3">&lt;3&gt;</label><label for="__tabbed_2_4">&lt;4&gt;</label><label for="__tabbed_2_5">&lt;5&gt;</label><label for="__tabbed_2_6">&lt;6&gt;</label><label for="__tabbed_2_7">&lt;7&gt;</label><label for="__tabbed_2_8">&lt;8&gt;</label><label for="__tabbed_2_9">&lt;9&gt;</label><label for="__tabbed_2_10">&lt;10&gt;</label><label for="__tabbed_2_11">&lt;11&gt;</label></div>
<div class="tabbed-content">
<div class="tabbed-block">
<p><img alt="graph_bfs_step1" src="../graph_traversal.assets/graph_bfs_step1.png" /></p>
<p><img alt="图的广度优先遍历步骤" src="../graph_traversal.assets/graph_bfs_step1.png" /></p>
</div>
<div class="tabbed-block">
<p><img alt="graph_bfs_step2" src="../graph_traversal.assets/graph_bfs_step2.png" /></p>
@ -2054,7 +2054,7 @@
<div class="tabbed-set tabbed-alternate" data-tabs="4:11"><input checked="checked" id="__tabbed_4_1" name="__tabbed_4" type="radio" /><input id="__tabbed_4_2" name="__tabbed_4" type="radio" /><input id="__tabbed_4_3" name="__tabbed_4" type="radio" /><input id="__tabbed_4_4" name="__tabbed_4" type="radio" /><input id="__tabbed_4_5" name="__tabbed_4" type="radio" /><input id="__tabbed_4_6" name="__tabbed_4" type="radio" /><input id="__tabbed_4_7" name="__tabbed_4" type="radio" /><input id="__tabbed_4_8" name="__tabbed_4" type="radio" /><input id="__tabbed_4_9" name="__tabbed_4" type="radio" /><input id="__tabbed_4_10" name="__tabbed_4" type="radio" /><input id="__tabbed_4_11" name="__tabbed_4" type="radio" /><div class="tabbed-labels"><label for="__tabbed_4_1">&lt;1&gt;</label><label for="__tabbed_4_2">&lt;2&gt;</label><label for="__tabbed_4_3">&lt;3&gt;</label><label for="__tabbed_4_4">&lt;4&gt;</label><label for="__tabbed_4_5">&lt;5&gt;</label><label for="__tabbed_4_6">&lt;6&gt;</label><label for="__tabbed_4_7">&lt;7&gt;</label><label for="__tabbed_4_8">&lt;8&gt;</label><label for="__tabbed_4_9">&lt;9&gt;</label><label for="__tabbed_4_10">&lt;10&gt;</label><label for="__tabbed_4_11">&lt;11&gt;</label></div>
<div class="tabbed-content">
<div class="tabbed-block">
<p><img alt="graph_dfs_step1" src="../graph_traversal.assets/graph_dfs_step1.png" /></p>
<p><img alt="图的深度优先遍历步骤" src="../graph_traversal.assets/graph_dfs_step1.png" /></p>
</div>
<div class="tabbed-block">
<p><img alt="graph_dfs_step2" src="../graph_traversal.assets/graph_dfs_step2.png" /></p>

View File

@ -1698,8 +1698,6 @@
<p>值得说明的是,多数编程语言提供的是「优先队列 Priority Queue」其是一种抽象数据结构<strong>定义为具有出队优先级的队列</strong></p>
<p>而恰好,<strong>堆的定义与优先队列的操作逻辑完全吻合</strong>,大顶堆就是一个元素从大到小出队的优先队列。从使用角度看,我们可以将「优先队列」和「堆」理解为等价的数据结构。因此,本文与代码对两者不做特别区分,统一使用「堆」来命名。</p>
<p>堆的常用操作见下表(方法命名以 Java 为例)。</p>
<p align="center"> Table. 堆的常用操作 </p>
<div class="center-table">
<table>
<thead>
@ -2242,7 +2240,7 @@
<div class="tabbed-set tabbed-alternate" data-tabs="4:6"><input checked="checked" id="__tabbed_4_1" name="__tabbed_4" type="radio" /><input id="__tabbed_4_2" name="__tabbed_4" type="radio" /><input id="__tabbed_4_3" name="__tabbed_4" type="radio" /><input id="__tabbed_4_4" name="__tabbed_4" type="radio" /><input id="__tabbed_4_5" name="__tabbed_4" type="radio" /><input id="__tabbed_4_6" name="__tabbed_4" type="radio" /><div class="tabbed-labels"><label for="__tabbed_4_1">&lt;1&gt;</label><label for="__tabbed_4_2">&lt;2&gt;</label><label for="__tabbed_4_3">&lt;3&gt;</label><label for="__tabbed_4_4">&lt;4&gt;</label><label for="__tabbed_4_5">&lt;5&gt;</label><label for="__tabbed_4_6">&lt;6&gt;</label></div>
<div class="tabbed-content">
<div class="tabbed-block">
<p><img alt="heap_push_step1" src="../heap.assets/heap_push_step1.png" /></p>
<p><img alt="元素入堆步骤" src="../heap.assets/heap_push_step1.png" /></p>
</div>
<div class="tabbed-block">
<p><img alt="heap_push_step2" src="../heap.assets/heap_push_step2.png" /></p>
@ -2509,7 +2507,7 @@
<div class="tabbed-set tabbed-alternate" data-tabs="6:10"><input checked="checked" id="__tabbed_6_1" name="__tabbed_6" type="radio" /><input id="__tabbed_6_2" name="__tabbed_6" type="radio" /><input id="__tabbed_6_3" name="__tabbed_6" type="radio" /><input id="__tabbed_6_4" name="__tabbed_6" type="radio" /><input id="__tabbed_6_5" name="__tabbed_6" type="radio" /><input id="__tabbed_6_6" name="__tabbed_6" type="radio" /><input id="__tabbed_6_7" name="__tabbed_6" type="radio" /><input id="__tabbed_6_8" name="__tabbed_6" type="radio" /><input id="__tabbed_6_9" name="__tabbed_6" type="radio" /><input id="__tabbed_6_10" name="__tabbed_6" type="radio" /><div class="tabbed-labels"><label for="__tabbed_6_1">&lt;1&gt;</label><label for="__tabbed_6_2">&lt;2&gt;</label><label for="__tabbed_6_3">&lt;3&gt;</label><label for="__tabbed_6_4">&lt;4&gt;</label><label for="__tabbed_6_5">&lt;5&gt;</label><label for="__tabbed_6_6">&lt;6&gt;</label><label for="__tabbed_6_7">&lt;7&gt;</label><label for="__tabbed_6_8">&lt;8&gt;</label><label for="__tabbed_6_9">&lt;9&gt;</label><label for="__tabbed_6_10">&lt;10&gt;</label></div>
<div class="tabbed-content">
<div class="tabbed-block">
<p><img alt="heap_poll_step1" src="../heap.assets/heap_poll_step1.png" /></p>
<p><img alt="堆顶元素出堆步骤" src="../heap.assets/heap_poll_step1.png" /></p>
</div>
<div class="tabbed-block">
<p><img alt="heap_poll_step2" src="../heap.assets/heap_poll_step2.png" /></p>

View File

@ -1525,7 +1525,7 @@
<div class="tabbed-set tabbed-alternate" data-tabs="1:5"><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" /><div class="tabbed-labels"><label for="__tabbed_1_1">&lt;1&gt;</label><label for="__tabbed_1_2">&lt;2&gt;</label><label for="__tabbed_1_3">&lt;3&gt;</label><label for="__tabbed_1_4">&lt;4&gt;</label><label for="__tabbed_1_5">&lt;5&gt;</label></div>
<div class="tabbed-content">
<div class="tabbed-block">
<p><img alt="look_up_dictionary_step_1" src="../algorithms_are_everywhere.assets/look_up_dictionary_step_1.png" /></p>
<p><img alt="查字典步骤" src="../algorithms_are_everywhere.assets/look_up_dictionary_step_1.png" /></p>
</div>
<div class="tabbed-block">
<p><img alt="look_up_dictionary_step_2" src="../algorithms_are_everywhere.assets/look_up_dictionary_step_2.png" /></p>

View File

@ -1675,7 +1675,7 @@
<div class="tabbed-set tabbed-alternate" data-tabs="1:7"><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" /><div class="tabbed-labels"><label for="__tabbed_1_1">&lt;1&gt;</label><label for="__tabbed_1_2">&lt;2&gt;</label><label for="__tabbed_1_3">&lt;3&gt;</label><label for="__tabbed_1_4">&lt;4&gt;</label><label for="__tabbed_1_5">&lt;5&gt;</label><label for="__tabbed_1_6">&lt;6&gt;</label><label for="__tabbed_1_7">&lt;7&gt;</label></div>
<div class="tabbed-content">
<div class="tabbed-block">
<p><img alt="binary_search_step1" src="../binary_search.assets/binary_search_step1.png" /></p>
<p><img alt="二分查找步骤" src="../binary_search.assets/binary_search_step1.png" /></p>
</div>
<div class="tabbed-block">
<p><img alt="binary_search_step2" src="../binary_search.assets/binary_search_step2.png" /></p>

View File

@ -1517,8 +1517,6 @@
<li>二分查找利用数据的有序性,通过循环不断缩小一半搜索区间来实现查找,其要求输入数据是有序的,并且仅适用于数组或基于数组实现的数据结构。</li>
<li>哈希查找借助哈希表来实现常数阶时间复杂度的查找操作,体现以空间换时间的算法思想。</li>
</ul>
<p align="center"> Table. 三种查找方法对比 </p>
<div class="center-table">
<table>
<thead>

View File

@ -1596,7 +1596,7 @@
<div class="tabbed-set tabbed-alternate" data-tabs="1:7"><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" /><div class="tabbed-labels"><label for="__tabbed_1_1">&lt;1&gt;</label><label for="__tabbed_1_2">&lt;2&gt;</label><label for="__tabbed_1_3">&lt;3&gt;</label><label for="__tabbed_1_4">&lt;4&gt;</label><label for="__tabbed_1_5">&lt;5&gt;</label><label for="__tabbed_1_6">&lt;6&gt;</label><label for="__tabbed_1_7">&lt;7&gt;</label></div>
<div class="tabbed-content">
<div class="tabbed-block">
<p><img alt="bubble_operation_step1" src="../bubble_sort.assets/bubble_operation_step1.png" /></p>
<p><img alt="冒泡操作步骤" src="../bubble_sort.assets/bubble_operation_step1.png" /></p>
</div>
<div class="tabbed-block">
<p><img alt="bubble_operation_step2" src="../bubble_sort.assets/bubble_operation_step2.png" /></p>
@ -1618,8 +1618,6 @@
</div>
</div>
</div>
<p align="center"> Fig. 冒泡操作 </p>
<h2 id="1121">11.2.1. &nbsp; 算法流程<a class="headerlink" href="#1121" title="Permanent link">&para;</a></h2>
<ol>
<li>设数组长度为 <span class="arithmatex">\(n\)</span> ,完成第一轮「冒泡」后,数组最大元素已在正确位置,接下来只需排序剩余 <span class="arithmatex">\(n - 1\)</span> 个元素。</li>

View File

@ -1603,7 +1603,7 @@
<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">&lt;1&gt;</label><label for="__tabbed_1_2">&lt;2&gt;</label><label for="__tabbed_1_3">&lt;3&gt;</label><label for="__tabbed_1_4">&lt;4&gt;</label><label for="__tabbed_1_5">&lt;5&gt;</label><label for="__tabbed_1_6">&lt;6&gt;</label><label for="__tabbed_1_7">&lt;7&gt;</label><label for="__tabbed_1_8">&lt;8&gt;</label><label for="__tabbed_1_9">&lt;9&gt;</label><label for="__tabbed_1_10">&lt;10&gt;</label></div>
<div class="tabbed-content">
<div class="tabbed-block">
<p><img alt="merge_sort_step1" src="../merge_sort.assets/merge_sort_step1.png" /></p>
<p><img alt="归并排序步骤" src="../merge_sort.assets/merge_sort_step1.png" /></p>
</div>
<div class="tabbed-block">
<p><img alt="merge_sort_step2" src="../merge_sort.assets/merge_sort_step2.png" /></p>

View File

@ -1625,7 +1625,7 @@
<div class="tabbed-set tabbed-alternate" data-tabs="1:19"><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" /><input id="__tabbed_1_11" name="__tabbed_1" type="radio" /><input id="__tabbed_1_12" name="__tabbed_1" type="radio" /><input id="__tabbed_1_13" name="__tabbed_1" type="radio" /><input id="__tabbed_1_14" name="__tabbed_1" type="radio" /><input id="__tabbed_1_15" name="__tabbed_1" type="radio" /><input id="__tabbed_1_16" name="__tabbed_1" type="radio" /><input id="__tabbed_1_17" name="__tabbed_1" type="radio" /><input id="__tabbed_1_18" name="__tabbed_1" type="radio" /><input id="__tabbed_1_19" name="__tabbed_1" type="radio" /><div class="tabbed-labels"><label for="__tabbed_1_1">&lt;1&gt;</label><label for="__tabbed_1_2">&lt;2&gt;</label><label for="__tabbed_1_3">&lt;3&gt;</label><label for="__tabbed_1_4">&lt;4&gt;</label><label for="__tabbed_1_5">&lt;5&gt;</label><label for="__tabbed_1_6">&lt;6&gt;</label><label for="__tabbed_1_7">&lt;7&gt;</label><label for="__tabbed_1_8">&lt;8&gt;</label><label for="__tabbed_1_9">&lt;9&gt;</label><label for="__tabbed_1_10">Java</label><label for="__tabbed_1_11">C++</label><label for="__tabbed_1_12">Python</label><label for="__tabbed_1_13">Go</label><label for="__tabbed_1_14">JavaScript</label><label for="__tabbed_1_15">TypeScript</label><label for="__tabbed_1_16">C</label><label for="__tabbed_1_17">C#</label><label for="__tabbed_1_18">Swift</label><label for="__tabbed_1_19">Zig</label></div>
<div class="tabbed-content">
<div class="tabbed-block">
<p><img alt="pivot_division_step1" src="../quick_sort.assets/pivot_division_step1.png" /></p>
<p><img alt="哨兵划分步骤" src="../quick_sort.assets/pivot_division_step1.png" /></p>
</div>
<div class="tabbed-block">
<p><img alt="pivot_division_step2" src="../quick_sort.assets/pivot_division_step2.png" /></p>

View File

@ -1616,8 +1616,6 @@
<p><img alt="双向队列的操作" src="../deque.assets/deque_operations.png" /></p>
<h2 id="531">5.3.1. &nbsp; 双向队列常用操作<a class="headerlink" href="#531" title="Permanent link">&para;</a></h2>
<p>双向队列的常用操作见下表,方法名需根据特定语言来确定。</p>
<p align="center"> Table. 双向队列的常用操作 </p>
<div class="center-table">
<table>
<thead>
@ -1925,7 +1923,7 @@
<div class="tabbed-set tabbed-alternate" data-tabs="2:5"><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" /><div class="tabbed-labels"><label for="__tabbed_2_1">LinkedListDeque</label><label for="__tabbed_2_2">pushLast()</label><label for="__tabbed_2_3">pushFirst()</label><label for="__tabbed_2_4">pollLast()</label><label for="__tabbed_2_5">pollFirst()</label></div>
<div class="tabbed-content">
<div class="tabbed-block">
<p><img alt="linkedlist_deque" src="../deque.assets/linkedlist_deque.png" /></p>
<p><img alt="基于链表实现双向队列的入队出队操作" src="../deque.assets/linkedlist_deque.png" /></p>
</div>
<div class="tabbed-block">
<p><img alt="linkedlist_deque_push_last" src="../deque.assets/linkedlist_deque_push_last.png" /></p>
@ -2486,7 +2484,7 @@
<div class="tabbed-set tabbed-alternate" data-tabs="4:5"><input checked="checked" id="__tabbed_4_1" name="__tabbed_4" type="radio" /><input id="__tabbed_4_2" name="__tabbed_4" type="radio" /><input id="__tabbed_4_3" name="__tabbed_4" type="radio" /><input id="__tabbed_4_4" name="__tabbed_4" type="radio" /><input id="__tabbed_4_5" name="__tabbed_4" type="radio" /><div class="tabbed-labels"><label for="__tabbed_4_1">ArrayDeque</label><label for="__tabbed_4_2">pushLast()</label><label for="__tabbed_4_3">pushFirst()</label><label for="__tabbed_4_4">pollLast()</label><label for="__tabbed_4_5">pollFirst()</label></div>
<div class="tabbed-content">
<div class="tabbed-block">
<p><img alt="array_deque" src="../deque.assets/array_deque.png" /></p>
<p><img alt="基于数组实现双向队列的入队出队操作" src="../deque.assets/array_deque.png" /></p>
</div>
<div class="tabbed-block">
<p><img alt="array_deque_push_last" src="../deque.assets/array_deque_push_last.png" /></p>

View File

@ -1645,8 +1645,6 @@
<p><img alt="队列的先入先出规则" src="../queue.assets/queue_operations.png" /></p>
<h2 id="521">5.2.1. &nbsp; 队列常用操作<a class="headerlink" href="#521" title="Permanent link">&para;</a></h2>
<p>队列的常用操作见下表,方法名需根据特定语言来确定。</p>
<p align="center"> Table. 队列的常用操作 </p>
<div class="center-table">
<table>
<thead>
@ -1907,7 +1905,7 @@
<div class="tabbed-set tabbed-alternate" data-tabs="2:3"><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" /><div class="tabbed-labels"><label for="__tabbed_2_1">LinkedListQueue</label><label for="__tabbed_2_2">push()</label><label for="__tabbed_2_3">poll()</label></div>
<div class="tabbed-content">
<div class="tabbed-block">
<p><img alt="linkedlist_queue" src="../queue.assets/linkedlist_queue.png" /></p>
<p><img alt="基于链表实现队列的入队出队操作" src="../queue.assets/linkedlist_queue.png" /></p>
</div>
<div class="tabbed-block">
<p><img alt="linkedlist_queue_push" src="../queue.assets/linkedlist_queue_push.png" /></p>
@ -2561,7 +2559,7 @@
<div class="tabbed-set tabbed-alternate" data-tabs="4:3"><input checked="checked" id="__tabbed_4_1" name="__tabbed_4" type="radio" /><input id="__tabbed_4_2" name="__tabbed_4" type="radio" /><input id="__tabbed_4_3" name="__tabbed_4" type="radio" /><div class="tabbed-labels"><label for="__tabbed_4_1">ArrayQueue</label><label for="__tabbed_4_2">push()</label><label for="__tabbed_4_3">poll()</label></div>
<div class="tabbed-content">
<div class="tabbed-block">
<p><img alt="array_queue" src="../queue.assets/array_queue.png" /></p>
<p><img alt="基于数组实现队列的入队出队操作" src="../queue.assets/array_queue.png" /></p>
</div>
<div class="tabbed-block">
<p><img alt="array_queue_push" src="../queue.assets/array_queue_push.png" /></p>

View File

@ -1700,8 +1700,6 @@
<p><img alt="栈的先入后出规则" src="../stack.assets/stack_operations.png" /></p>
<h2 id="511">5.1.1. &nbsp; 栈常用操作<a class="headerlink" href="#511" title="Permanent link">&para;</a></h2>
<p>栈的常用操作见下表(方法命名以 Java 为例)。</p>
<p align="center"> Table. 栈的常用操作 </p>
<div class="center-table">
<table>
<thead>
@ -1961,7 +1959,7 @@
<div class="tabbed-set tabbed-alternate" data-tabs="2:3"><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" /><div class="tabbed-labels"><label for="__tabbed_2_1">LinkedListStack</label><label for="__tabbed_2_2">push()</label><label for="__tabbed_2_3">pop()</label></div>
<div class="tabbed-content">
<div class="tabbed-block">
<p><img alt="linkedlist_stack" src="../stack.assets/linkedlist_stack.png" /></p>
<p><img alt="基于链表实现栈的入栈出栈操作" src="../stack.assets/linkedlist_stack.png" /></p>
</div>
<div class="tabbed-block">
<p><img alt="linkedlist_stack_push" src="../stack.assets/linkedlist_stack_push.png" /></p>
@ -2523,7 +2521,7 @@
<div class="tabbed-set tabbed-alternate" data-tabs="4:3"><input checked="checked" id="__tabbed_4_1" name="__tabbed_4" type="radio" /><input id="__tabbed_4_2" name="__tabbed_4" type="radio" /><input id="__tabbed_4_3" name="__tabbed_4" type="radio" /><div class="tabbed-labels"><label for="__tabbed_4_1">ArrayStack</label><label for="__tabbed_4_2">push()</label><label for="__tabbed_4_3">pop()</label></div>
<div class="tabbed-content">
<div class="tabbed-block">
<p><img alt="array_stack" src="../stack.assets/array_stack.png" /></p>
<p><img alt="基于数组实现栈的入栈出栈操作" src="../stack.assets/array_stack.png" /></p>
</div>
<div class="tabbed-block">
<p><img alt="array_stack_push" src="../stack.assets/array_stack_push.png" /></p>

View File

@ -2162,7 +2162,7 @@
<div class="tabbed-set tabbed-alternate" data-tabs="4:4"><input checked="checked" id="__tabbed_4_1" name="__tabbed_4" type="radio" /><input id="__tabbed_4_2" name="__tabbed_4" type="radio" /><input id="__tabbed_4_3" name="__tabbed_4" type="radio" /><input id="__tabbed_4_4" name="__tabbed_4" type="radio" /><div class="tabbed-labels"><label for="__tabbed_4_1">&lt;1&gt;</label><label for="__tabbed_4_2">&lt;2&gt;</label><label for="__tabbed_4_3">&lt;3&gt;</label><label for="__tabbed_4_4">&lt;4&gt;</label></div>
<div class="tabbed-content">
<div class="tabbed-block">
<p><img alt="avltree_right_rotate_step1" src="../avl_tree.assets/avltree_right_rotate_step1.png" /></p>
<p><img alt="右旋操作步骤" src="../avl_tree.assets/avltree_right_rotate_step1.png" /></p>
</div>
<div class="tabbed-block">
<p><img alt="avltree_right_rotate_step2" src="../avl_tree.assets/avltree_right_rotate_step2.png" /></p>

View File

@ -1685,7 +1685,7 @@
<div class="tabbed-set tabbed-alternate" data-tabs="1:4"><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" /><div class="tabbed-labels"><label for="__tabbed_1_1">&lt;1&gt;</label><label for="__tabbed_1_2">&lt;2&gt;</label><label for="__tabbed_1_3">&lt;3&gt;</label><label for="__tabbed_1_4">&lt;4&gt;</label></div>
<div class="tabbed-content">
<div class="tabbed-block">
<p><img alt="bst_search_step1" src="../binary_search_tree.assets/bst_search_step1.png" /></p>
<p><img alt="查找结点步骤" src="../binary_search_tree.assets/bst_search_step1.png" /></p>
</div>
<div class="tabbed-block">
<p><img alt="bst_search_step2" src="../binary_search_tree.assets/bst_search_step2.png" /></p>
@ -2185,7 +2185,7 @@
<div class="tabbed-set tabbed-alternate" data-tabs="4:4"><input checked="checked" id="__tabbed_4_1" name="__tabbed_4" type="radio" /><input id="__tabbed_4_2" name="__tabbed_4" type="radio" /><input id="__tabbed_4_3" name="__tabbed_4" type="radio" /><input id="__tabbed_4_4" name="__tabbed_4" type="radio" /><div class="tabbed-labels"><label for="__tabbed_4_1">&lt;1&gt;</label><label for="__tabbed_4_2">&lt;2&gt;</label><label for="__tabbed_4_3">&lt;3&gt;</label><label for="__tabbed_4_4">&lt;4&gt;</label></div>
<div class="tabbed-content">
<div class="tabbed-block">
<p><img alt="bst_remove_case3_step1" src="../binary_search_tree.assets/bst_remove_case3_step1.png" /></p>
<p><img alt="删除结点(度为 2步骤" src="../binary_search_tree.assets/bst_remove_case3_step1.png" /></p>
</div>
<div class="tabbed-block">
<p><img alt="bst_remove_case3_step2" src="../binary_search_tree.assets/bst_remove_case3_step2.png" /></p>

View File

@ -1658,8 +1658,6 @@
<p>「层序遍历 Level-Order Traversal」从顶至底、一层一层地遍历二叉树并在每层中按照从左到右的顺序访问结点。</p>
<p>层序遍历本质上是「广度优先搜索 Breadth-First Traversal」其体现着一种“一圈一圈向外”的层进遍历方式。</p>
<p><img alt="二叉树的层序遍历" src="../binary_tree_traversal.assets/binary_tree_bfs.png" /></p>
<p align="center"> Fig. 二叉树的层序遍历 </p>
<h3 id="_1">算法实现<a class="headerlink" href="#_1" title="Permanent link">&para;</a></h3>
<p>广度优先遍历一般借助「队列」来实现。队列的规则是“先进先出”,广度优先遍历的规则是 ”一层层平推“ ,两者背后的思想是一致的。</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>
@ -1875,8 +1873,6 @@
<p>相对地,前、中、后序遍历皆属于「深度优先遍历 Depth-First Traversal」其体现着一种“先走到尽头再回头继续”的回溯遍历方式。</p>
<p>如下图所示,左侧是深度优先遍历的的示意图,右上方是对应的递归实现代码。深度优先遍历就像是绕着整个二叉树的外围“走”一圈,走的过程中,在每个结点都会遇到三个位置,分别对应前序遍历、中序遍历、后序遍历。</p>
<p><img alt="二叉搜索树的前、中、后序遍历" src="../binary_tree_traversal.assets/binary_tree_dfs.png" /></p>
<p align="center"> Fig. 二叉树的前 / 中 / 后序遍历 </p>
<div class="center-table">
<table>
<thead>

File diff suppressed because one or more lines are too long

Binary file not shown.