B-树、B+树和红黑树
B-树
B-树是一种平衡的多路查找树,它在文件系统中很有用。
一颗m阶的B-树可以为空树,否则必须满足下列条件:
- 是一个m叉树,每个节点最多有m颗子树;
- 如果根节点不是叶子节点,则至少有两颗子树;
- 除根节点之外的所有非终端节点至少有⌈m/2⌉ 颗子树;
- 所有非终端节点中包含下列信息数据(n, A0, K1,A1, K1, A2, …,Kn, An)其中Ki(i = 1, …, n)是关键字,且 Ki < Ki+1(i = 1, … , n-1);Ai(i = 0, … , n)为指向子树根节点的指针,且指针Ai-1所指子树中所有节点的关键字均小于Ki(i = 1, … ,n),An所指子树中所有结点的关键字均大于Kn,n (⌈m/2⌉ - 1 ≤ n ≤ m - 1)为关键字的个数(或 n+1 为子树个数)。
- 所有的叶子节点都出现在同一层次上,并且不带信息(可以看做是外部节点或查找失败的节点,实际上这些节点不存在,指向这些节点的指针为空)。
查找方式类似于二叉树
B+树
B+是应文件系统所需而出的一种B-树的变型树。一颗m阶的B+树和m阶的B-树差异在于:
- 有n颗子树的节点中含有n个关键字
- 所有的叶子结点中包含了全部关键字的信息,及指向含这些关键字记录的指针,且叶子节点本身依关键字的大小自小而大顺序链接。
- 所有的非终端结点可以看成是索引部分,节点中仅含有其子树(根结点)中的最大(或最小)关键字。
红黑树
https://blog.csdn.net/Sun_TTTT/article/details/65445754
注:来源于 数据结构(清华大学出版社)