提交 b23d0cbc 编写于 作者: A Abel-Huang

figure position reset

上级 55731bf7
......@@ -42,6 +42,7 @@
}
```
![figure_9_1](https://github.com/Abel-Huang/cs61b-textbook-zh/blob/master/zh/img/figure_9_1.png)
图9.1: 键为整型的4阶B-树示例。圆圈代表空节点,它们出现在树的同一层级。每个节点拥有2到4个子节点,每个节点用于1到3个关键字。每个键都大于其左侧子节点中的所有键,并且小于右侧子节点中的所有键。
### 9.1.1 插入
......@@ -52,15 +53,19 @@
从B-树中删除通常比插入操作更复杂,但也不是太糟糕。和之前一样,在真实的产品实现中,为了提升速度会引入更多复杂的内容。为了简单起见,我将描述一种简单,理想化的方法。从插入的工作方式中获得启发,我们首先将待删除的键移动到树的底部(删除很简单)。然后,如果删除后使得原始节点太小,我们将其与兄弟节点合并,拉下用于将两者与父节点分开的关键字。图9.4中的伪代码描述了该过程,如图9.5所示。
![figure_9_2](https://github.com/Abel-Huang/cs61b-textbook-zh/blob/master/zh/img/figure_9_2.jpg)
图9.2:B-树节点分裂。图9.3是过程示意图。
![figure_9_3](https://github.com/Abel-Huang/cs61b-textbook-zh/blob/master/zh/img/figure_9_3.jpg)
图9.3:B-树插入操作。在图9.1所示的B-树上进行插入操作,分别插入15,145和35三个关键字。
![figure_9_4](https://github.com/Abel-Huang/cs61b-textbook-zh/blob/master/zh/img/figure_9_4.jpg)
图9.4:B-树删除操作。图9.5是过程示意图。
![figure_9_5](https://github.com/Abel-Huang/cs61b-textbook-zh/blob/master/zh/img/figure_9_5.jpg)
图9.5:B-树删除操作。这个示例基于图9.3中的(c)部分。在(a)中,我们删除了关键字25。首先,移动25到底部并与其子节点合并。然后,删除关键字25,如果合并后的节点过大,我们需要进行分裂,并将关键字15提升为父节点。接下来,(b)在(a)删除的基础上,删除关键字10。从底部节点删除10会使该节点变小小,因此我们合并它,从父节点向下移动关键字15。这样会导致父节点变小,因此我们继续进行合并,将关键字35从根节点往下移动,得到最终的树。
### 9.1.3 红黑树:二分查找的(2, 4)树
......@@ -89,10 +94,10 @@ C. 从根节点到叶子节点的任何路径都遍历相同数量的黑色节
### 9.2.1 字典树: 基本属性和算法
这个结果说明我们可以通过字典树*trie*这种数据结构来避免$\lgN$的影响。一个纯粹的字典树是一种树,由一些固定大小的字符组成的字符串表示,A = {$a_0$,$a_1$,...,$a_(M-1)$}。其中一个字符是只出现在单词末尾的特殊分隔符,'□'。例如,A可能是一组可打印的ASCII字符,'□'表示一个不能打印的字符,例如'\000'(NUL)。一棵字典树T,可以被下面的方式抽象的递归定义。
* 空;
* 一个叶子节点包含一个字符串;
* 一个内部结点包含M个孩子也是字典树。通向这些孩子的边界用字母表中的字符标记,$a_i$,像这样:$C_(a_0)$,$C_(a_1)$,... $C_(a_(m-1))$。
这个结果说明我们可以通过字典树*trie*这种数据结构来避免$\lgN$的影响。一个纯粹的字典树是一种树,由一些固定大小的字符组成的字符串表示,A = {$a_0$,$a_1$,...,$a_(M-1)$}。其中一个字符是只出现在单词末尾的特殊分隔符,'□'。例如,A可能是一组可打印的ASCII字符,'□'表示一个不能打印的字符,例如'\000'(NUL)。一棵字典树T,可以被下面的方式抽象的递归定义。
1. 空;
2. 一个叶子节点包含一个字符串;
3. 一个内部结点包含M个孩子也是字典树。通向这些孩子的边界用字母表中的字符标记,$a_i$,像这样:$C_(a_0)$,$C_(a_1)$,... $C_(a_(m-1))$。
我们可以认为字典树是叶子节点由字符串组成的树。除此外我们还附加了另外一个条件:
* 如从字典树的根开始,并且接下来的边标记为$s_0$,$s_1$,...,$s_(h-1)$,我们访问到的每一个字符串为$s_0$$s_1$$s_(h-1)$。
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册