多叉树
多叉树中的每个节点可能包含多个节点,通常将其称之为n叉树。多叉树每个节点可以有m-1个值且可以有m个子节点。通常,不是每个系欸但都需要右m-1个值或者m个子节点
B Trees
B树是n叉树的一种特例,管饭用于磁盘的访问,顺序为m的B树最多可以有m-1个键,并且最多右m个指针指向其子节点。
![](https://img-blog.csdnimg.cn/20200223171234876.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0ppYW5adW9HdWFuZw==,size_16,color_FFFFFF,t_70)
B树用于在运行时对存储的数据进行搜素、插入、删除。
B Trees的属性
- 所有叶子节点均位于同一层
- 除根节点(root)外,所有节点都必须至少具有 [ m ∗ 2 ] − 1 [m*2]-1 [m∗2]−1,至多右 [ m − 1 ] [m-1] [m−1]个键值
- 具有 n − 1 n-1 n−1个键的非叶子节点必须具有n个子节点
- 节点中的所有键值必须按照升序排列
- 所有内部节点必须至少右m/2个子节点
- 如果根节点为非叶子节点,则根节点必须至少右两个子节点
B树的几个变体
- B+ Trees
![](https://img-blog.csdnimg.cn/20200223171303454.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0ppYW5adW9HdWFuZw==,size_16,color_FFFFFF,t_70)
B+ 树可以被看作是B树,但是B+树中每个节点仅包含键(不包含键值对),并且将所有的记录存储在树的叶子级别节点中。它由两个部分组成,第一部分时构成内部节点的索引集,第二部分是构成叶子的序列集。我们既可以以链式形式访问键,也可以顺序访问键。与普通的B树相比,B+树允许更高效的检索数据。
B+树的使用
文件索引,B+树可有效的用于文件的检索操作,指向节点中子节点的大量指针有助减少在数据中查找元素所需的I/O操作数量,使用B+树有利于减少I/O操作时间
B+树的属性
- 插入复杂度O(log n)
- 查找复杂度O(log n)
- 移除复杂度O(log n)
- 对范围内的K元素执行查询需要O(log n+k)
更多内容,欢迎访问:
![在这里插入图片描述](https://img-blog.csdnimg.cn/20200223181646849.jpg)