From fc70b1eb2cc06dc32eb2a7b91b8b83cffd83b8ef Mon Sep 17 00:00:00 2001 From: krahets Date: Mon, 23 Oct 2023 03:09:41 +0800 Subject: [PATCH] Fix the docs of binary_search_tree and graph_operations. --- docs/chapter_array_and_linkedlist/summary.md | 6 ++++-- docs/chapter_graph/graph_operations.md | 9 +++++---- docs/chapter_tree/binary_search_tree.md | 2 +- 3 files changed, 10 insertions(+), 7 deletions(-) diff --git a/docs/chapter_array_and_linkedlist/summary.md b/docs/chapter_array_and_linkedlist/summary.md index f8ba9fc15..1e8c436cc 100644 --- a/docs/chapter_array_and_linkedlist/summary.md +++ b/docs/chapter_array_and_linkedlist/summary.md @@ -4,8 +4,10 @@ - 数组和链表是两种基本的数据结构,分别代表数据在计算机内存中的两种存储方式:连续空间存储和分散空间存储。两者的特点呈现出互补的特性。 - 数组支持随机访问、占用内存较少;但插入和删除元素效率低,且初始化后长度不可变。 -- 链表通过更改引用(指针)实现高效的节点插入与删除,且可以灵活调整长度;但节点访问效率低、占用内存较多。常见的链表类型包括单向链表、循环链表、双向链表。 -- 动态数组,又称列表,是基于数组实现的一种数据结构。它保留了数组的优势,同时可以灵活调整长度。列表的出现极大地提高了数组的易用性,但可能导致部分内存空间浪费。 +- 链表通过更改引用(指针)实现高效的节点插入与删除,且可以灵活调整长度;但节点访问效率低、占用内存较多。 +- 常见的链表类型包括单向链表、循环链表、双向链表,它们分别具有各自的应用场景。 +- 列表是一种支持增删查改的元素有序集合,通常基于动态数组实现,其保留了数组的优势,同时可以灵活调整长度。 +- 列表的出现大幅地提高了数组的实用性,但可能导致部分内存空间浪费。 ### Q & A diff --git a/docs/chapter_graph/graph_operations.md b/docs/chapter_graph/graph_operations.md index 3b465ff70..602290e96 100644 --- a/docs/chapter_graph/graph_operations.md +++ b/docs/chapter_graph/graph_operations.md @@ -57,11 +57,12 @@ === "删除顶点" ![adjacency_list_remove_vertex](graph_operations.assets/adjacency_list_remove_vertex.png) -以下是基于邻接表实现图的代码示例。细心的同学可能注意到,**我们在邻接表中使用 `Vertex` 节点类来表示顶点**,而这样做是有原因的。 +以下是邻接表的代码实现。对比上图,实际代码有以下不同。 -1. 如果我们选择通过顶点值来区分不同顶点,那么值重复的顶点将无法被区分。 -2. 如果类似邻接矩阵那样,使用顶点列表索引来区分不同顶点。那么,假设我们想要删除索引为 $i$ 的顶点,则需要遍历整个邻接表,将其中 $> i$ 的索引全部减 $1$ ,这样操作效率较低。 -3. 因此我们考虑引入顶点类 `Vertex` ,使得每个顶点都是唯一的对象,此时删除顶点时就无须改动其余顶点了。 +- 为了方便添加与删除顶点,以及简化代码,我们使用列表(动态数组)来代替链表。 +- 使用哈希表来存储邻接表,`key` 为顶点实例,`value` 为该顶点的邻接顶点列表(链表)。 + +另外,我们在邻接表中使用 `Vertex` 类来表示顶点。这是因为如果与邻接矩阵一样用列表索引来区分不同顶点。那么假设想要删除索引为 $i$ 的顶点,则需要遍历整个邻接表,将所有大于 $i$ 的索引全部减 $1$ ,效率很低。而如果每个顶点都是唯一的 `Vertex` 实例,删除某一顶点之后就无须改动其他顶点了。 ```src [file]{graph_adjacency_list}-[class]{graph_adj_list}-[func]{} diff --git a/docs/chapter_tree/binary_search_tree.md b/docs/chapter_tree/binary_search_tree.md index f7d4d7d80..d32a12a99 100755 --- a/docs/chapter_tree/binary_search_tree.md +++ b/docs/chapter_tree/binary_search_tree.md @@ -9,7 +9,7 @@ ## 二叉搜索树的操作 -我们将二叉搜索树封装为一个类 `ArrayBinaryTree` ,并声明一个成员变量 `root` ,指向树的根节点。 +我们将二叉搜索树封装为一个类 `BinarySearchTree` ,并声明一个成员变量 `root` ,指向树的根节点。 ### 查找节点