提交 e0f94a02 编写于 作者: C CyC2018

auto commit

上级 b2ff1fd0
......@@ -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>
红黑树具有以下性质:
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册