mirror of
https://github.com/krahets/hello-algo.git
synced 2024-12-25 01:06:30 +08:00
Fine-tune the docs.
This commit is contained in:
parent
3b3841ba36
commit
3902ccbfc7
6 changed files with 13 additions and 11 deletions
|
@ -34,6 +34,8 @@
|
|||
函数(function)可以独立被执行,所有参数都以显式传递。
|
||||
方法(method)与一个对象关联,方法被隐式传递给调用它的对象,方法能够对类的实例中包含的数据进行操作。
|
||||
|
||||
因此,C 和 Go 只有函数,Java 和 C# 只有方法,在 C++, Python 中取决于它是否属于一个类。
|
||||
|
||||
!!! question "图片“空间复杂度的常见类型”反映的是否是占用空间的绝对大小?"
|
||||
|
||||
不是,该图片展示的是空间复杂度(即增长趋势),而不是占用空间的绝对大小。每个曲线都包含一个常数项,用来把所有曲线的取值范围压缩到一个视觉舒适的范围内。
|
||||
|
|
|
@ -538,7 +538,7 @@ index = hash(key) % capacity
|
|||
|
||||
## 哈希冲突与扩容
|
||||
|
||||
本质上看,哈希函数的作用是黄输入空间(`key` 范围)映射到输出空间(数组索引范围),而输入空间往往远大于输出空间。因此,**理论上一定存在“多个输入对应相同输出”的情况**。
|
||||
本质上看,哈希函数的作用是将输入空间(`key` 范围)映射到输出空间(数组索引范围),而输入空间往往远大于输出空间。因此,**理论上一定存在“多个输入对应相同输出”的情况**。
|
||||
|
||||
对于上述示例中的哈希函数,当输入的 `key` 后两位相同时,哈希函数的输出结果也相同。例如,查询学号为 12836 和 20336 的两个学生时,我们得到:
|
||||
|
||||
|
|
|
@ -6,6 +6,7 @@
|
|||
- 完全二叉树非常适合用数组表示,因此我们通常使用数组来存储堆。
|
||||
- 堆化操作用于维护堆的性质,在入堆和出堆操作中都会用到。
|
||||
- 输入 $n$ 个元素并建堆的时间复杂度可以优化至 $O(n)$ ,非常高效。
|
||||
- Top-K 是一个经典算法问题,可以使用堆数据结构高效解决,时间复杂度为 $O(n \log k)$ 。
|
||||
|
||||
## Q & A
|
||||
|
||||
|
|
|
@ -182,19 +182,18 @@
|
|||
|
||||
与插入节点类似,我们需要在删除操作后维持二叉搜索树的“左子树 < 根节点 < 右子树”的性质。首先,我们需要在二叉树中执行查找操作,获取待删除节点。接下来,根据待删除节点的子节点数量,删除操作需分为三种情况:
|
||||
|
||||
当待删除节点的子节点数量 $= 0$ 时,表示待删除节点是叶节点,可以直接删除。
|
||||
当待删除节点的度为 $0$ 时,表示待删除节点是叶节点,可以直接删除。
|
||||
|
||||
![在二叉搜索树中删除节点(度为 0)](binary_search_tree.assets/bst_remove_case1.png)
|
||||
|
||||
当待删除节点的子节点数量 $= 1$ 时,将待删除节点替换为其子节点即可。
|
||||
当待删除节点的度为 $1$ 时,将待删除节点替换为其子节点即可。
|
||||
|
||||
![在二叉搜索树中删除节点(度为 1)](binary_search_tree.assets/bst_remove_case2.png)
|
||||
|
||||
当待删除节点的子节点数量 $= 2$ 时,删除操作分为三步:
|
||||
当待删除节点的度为 $2$ 时,我们无法直接删除它,而需要使用一个节点替换该节点。由于要保持二叉搜索树“左 $<$ 根 $<$ 右”的性质,因此这个节点可以是右子树的最小节点或左子树的最大节点。假设我们选择右子树的最小节点(或者称为中序遍历的下个节点),则删除操作为:
|
||||
|
||||
1. 找到待删除节点在“中序遍历序列”中的下一个节点,记为 `tmp` ;
|
||||
2. 在树中递归删除节点 `tmp` ;
|
||||
3. 用 `tmp` 的值覆盖待删除节点的值;
|
||||
2. 将 `tmp` 的值覆盖待删除节点的值,并在树中递归删除节点 `tmp` ;
|
||||
|
||||
=== "<1>"
|
||||
![二叉搜索树删除节点示例](binary_search_tree.assets/bst_remove_case3_step1.png)
|
||||
|
|
Loading…
Reference in a new issue