Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
wushizhenking
CS-Notes
提交
e0f94a02
C
CS-Notes
项目概览
wushizhenking
/
CS-Notes
与 Fork 源项目一致
从无法访问的项目Fork
通知
2
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
C
CS-Notes
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
e0f94a02
编写于
3月 24, 2018
作者:
C
CyC2018
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
auto commit
上级
b2ff1fd0
变更
7
隐藏空白更改
内联
并排
Showing
7 changed file
with
18 addition
and
11 deletion
+18
-11
notes/算法.md
notes/算法.md
+18
-11
pics/299a8cd3-7cfa-45d0-8821-4aa577de4692.png
pics/299a8cd3-7cfa-45d0-8821-4aa577de4692.png
+0
-0
pics/64b70b59-5bae-4dd2-addd-7f687ea5b64b.png
pics/64b70b59-5bae-4dd2-addd-7f687ea5b64b.png
+0
-0
pics/8a116e69-3d57-4987-a215-0197dd044a14.png
pics/8a116e69-3d57-4987-a215-0197dd044a14.png
+0
-0
pics/a259182b-91b7-4b63-98c9-9d9cc6e199d4.png
pics/a259182b-91b7-4b63-98c9-9d9cc6e199d4.png
+0
-0
pics/a46cf05d-e665-4937-a939-a3ab783bc8ee.png
pics/a46cf05d-e665-4937-a939-a3ab783bc8ee.png
+0
-0
pics/fd20f4f9-e5d8-43cf-bf4f-2057c18d01fb.png
pics/fd20f4f9-e5d8-43cf-bf4f-2057c18d01fb.png
+0
-0
未找到文件。
notes/算法.md
浏览文件 @
e0f94a02
...
...
@@ -884,11 +884,11 @@ public static Comparable select(Comparable[] a, int k) {
### 1. 无序符号表
<div
align=
"center"
>
<img
src=
"../pics//
aaa40d0a-0aff-4161-adde-8d7bf56dc4b9.jpg
"
/>
</div><br>
<div
align=
"center"
>
<img
src=
"../pics//
8a116e69-3d57-4987-a215-0197dd044a14.png"
width=
"800
"
/>
</div><br>
### 2. 有序符号表
<div
align=
"center"
>
<img
src=
"../pics//
1984a822-da4e-4461-b826-55b798e2d419.jpg
"
/>
</div><br>
<div
align=
"center"
>
<img
src=
"../pics//
299a8cd3-7cfa-45d0-8821-4aa577de4692.png"
width=
"800
"
/>
</div><br>
有序指的是支持 min() max() 等根据键的大小关系来实现的操作。
...
...
@@ -1053,9 +1053,6 @@ private Node put(Node x, Key key, Value val) {
<div
align=
"center"
>
<img
src=
"../pics//0dd97d9e-7a38-460e-a2ac-3e4511145240.png"
width=
"300"
/>
</div><br>
复杂度:BST 查找和插入操作的平均时间复杂度为对数级别。
### 4. floor()
floor(key):小于等于键的最大键
...
...
@@ -1187,27 +1184,37 @@ private void keys(Node x, Queue<Key> queue, Key lo, Key hi) {
## 2-3 查找树
<div
align=
"center"
>
<img
src=
"../pics//
2548f2ec-7b00-4ec7-b286-20fc3022e084.jpg
"
/>
</div><br>
<div
align=
"center"
>
<img
src=
"../pics//
fd20f4f9-e5d8-43cf-bf4f-2057c18d01fb.png"
width=
"300
"
/>
</div><br>
一颗完美平衡的 2-3 查找树的所有空链接到根节点的距离应该是相同的。
2-3 查找树引入了 2- 节点和 3- 节点,目的是为了让树更平衡。
一颗完美平衡的 2-3 查找树的所有空链接到根节点的距离应该是相同的。
### 1. 插入操作
当插入之后产生一个临时 4- 节点时,需要将 4- 节点分裂成 3 个 2- 节点,并将中间的 2- 节点移到上层节点中。如果上移操作继续产生临时 4- 节点则一直进行分裂上移,直到不存在临时 4- 节点。
插入操作和 BST 的插入操作有很大区别,BST 的插入操作是先进行一次未命中的查找,然后再将节点插入到对应的空链接上。但是 2-3 查找树如果也这么做的话,那么就会破坏了平衡性。它是将新节点插入到叶子节点上。
根据叶子节点的类型不同,有不同的处理方式。
插入到 2- 节点上,那么直接将新节点和原来的节点组成 3- 节点即可。
<div
align=
"center"
>
<img
src=
"../pics//912174d8-0786-4222-b7ef-a611d36e5db9.jpg"
/>
</div><br>
<div
align=
"center"
>
<img
src=
"../pics//64b70b59-5bae-4dd2-addd-7f687ea5b64b.png"
width=
"400"
/>
</div><br>
如果是插入到 3- 节点上,就会产生一个临时 4- 节点时,需要将 4- 节点分裂成 3 个 2- 节点,并将中间的 2- 节点移到上层节点中。如果上移操作继续产生临时 4- 节点则一直进行分裂上移,直到不存在临时 4- 节点。
<div
align=
"center"
>
<img
src=
"../pics//a259182b-91b7-4b63-98c9-9d9cc6e199d4.png"
width=
"400"
/>
</div><br>
### 2. 性质
2-3 查找树插入操作的变换都是局部的,除了相关的节点和链接之外不必修改或者检查树的其它部分,而这些局部变换不会影响树的全局有序性和平衡性。
2-3 查找树的查找和插入操作复杂度和插入顺序
**无关**
,在最坏的情况下查找和插入操作访问的节点必然不超过 logN 个,含有 10 亿个节点的 2-3 查找树最多只需要访问 30 个节点就能进行任意的查找和插入操作。
2-3 查找树的查找和插入操作复杂度和插入顺序无关,在最坏的情况下查找和插入操作访问的节点必然不超过 logN 个,含有 10 亿个节点的 2-3 查找树最多只需要访问 30 个节点就能进行任意的查找和插入操作。
<div
align=
"center"
>
<img
src=
"../pics//a46cf05d-e665-4937-a939-a3ab783bc8ee.png"
/>
</div><br>
## 红黑二叉查找树
2-3 查找树需要用到 2- 节点和 3- 节点,红黑树使用红链接来实现 3- 节点。指向一个节点的链接颜色如果为红色,那么这个节点和上层节点表示的是一个 3- 节点,而黑色则是普通链接。
<div
align=
"center"
>
<img
src=
"../pics//
7080a928-06ba-4e10-9792-b8dd190dc8e2.jpg
"
/>
</div><br>
<div
align=
"center"
>
<img
src=
"../pics//
a46cf05d-e665-4937-a939-a3ab783bc8ee.png"
width=
"800
"
/>
</div><br>
红黑树具有以下性质:
...
...
pics/299a8cd3-7cfa-45d0-8821-4aa577de4692.png
0 → 100644
浏览文件 @
e0f94a02
309.0 KB
pics/64b70b59-5bae-4dd2-addd-7f687ea5b64b.png
0 → 100644
浏览文件 @
e0f94a02
61.0 KB
pics/8a116e69-3d57-4987-a215-0197dd044a14.png
0 → 100644
浏览文件 @
e0f94a02
162.0 KB
pics/a259182b-91b7-4b63-98c9-9d9cc6e199d4.png
0 → 100644
浏览文件 @
e0f94a02
239.0 KB
pics/a46cf05d-e665-4937-a939-a3ab783bc8ee.png
0 → 100644
浏览文件 @
e0f94a02
60.0 KB
pics/fd20f4f9-e5d8-43cf-bf4f-2057c18d01fb.png
0 → 100644
浏览文件 @
e0f94a02
33.0 KB
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录