红黑树、B树、B+树

This commit is contained in:
huihut 2018-04-03 23:56:44 +08:00
parent 7c233316f8
commit 24055b2cf0

View File

@ -1132,12 +1132,59 @@ typedef struct BiTNode
* 关联数组如STL中的map、set
#### B树
##### 红黑树的特征是什么?
#### B+树
* 节点是红色或黑色。
* 根是黑色。
* 所有叶子都是黑色叶子是NIL节点
* 每个红色节点必须有两个黑色的子节点。(从每个叶子到根的所有路径上不能有两个连续的红色节点。)
* 从任一节点到其每个叶子的所有简单路径都包含相同数目的黑色节点。
##### 红黑树、B树、B+的区别?
* 红黑树的深度比较大而B树和B+树的深度则相对要小一些
* 而B树和B+树则将数据都保存在叶子节点,同时通过链表的形式将他们连接在一起。
#### B树B-tree、B+树B+-tree
![B树B-tree、B+树B+-tree](https://i.stack.imgur.com/l6UyF.png)
##### 特点
* 一般化的二叉查找树binary search tree
* “矮胖”,内部(非叶子)节点可以拥有可变数量的子节点(数量范围预先定义好)
##### 应用
* 大部分文件系统、数据库系统都采用B树、B+树作为索引结构
##### 区别
* B+树中只有叶子节点会带有指向记录的指针ROWID而B树则所有节点都带有在内部节点出现的索引项不会再出现在叶子节点中。
* B+树中所有叶子节点都是通过指针连接在一起而B树不会。
##### B树的优点
对于在内部节点的数据,可直接得到,不必根据叶子节点来定位。
##### B+树的优点
* 非叶子节点不会带上ROWID这样一个块中可以容纳更多的索引项一是可以降低树的高度。二是一个内部节点可以定位更多的叶子节点。
* 叶子节点之间通过指针来连接范围扫描将十分简单而对于B树来说则需要在叶子节点和内部节点不停的往返移动。
> B树、B+树区别来自:[differences-between-b-trees-and-b-trees](https://stackoverflow.com/questions/870218/differences-between-b-trees-and-b-trees)、[B树和B+树的区别](https://www.cnblogs.com/ivictor/p/5849061.html)
#### 八叉树
![](https://upload.wikimedia.org/wikipedia/commons/thumb/3/35/Octree2.png/400px-Octree2.png)
八叉树octree或称八元树是一种用于描述三维空间划分空间的树状数据结构。八叉树的每个节点表示一个正方体的体积元素每个节点有八个子节点这八个子节点所表示的体积元素加在一起就等于父节点的体积。一般中心点作为节点的分叉中心。
##### 用途
* 三维计算机图形
* 最邻近搜索
### 图
## 算法