B树_算法
又称多路平衡查找树,B树中所有节点的孩子节点的最大值为B树的阶。
一棵m阶B树或为空树,或为满足如下特征的树:
-
树中每个节点最多有m颗子树,最多有m-1个关键字
-
所有叶子节点都在同一层,并且不带信息
-
如果根节点不是终端节点,则根节点至少有两颗子树
-
除根节点外,其他非叶子节点至少有(m-1)/2颗子树(即至少有(m-1)/2-1个关键字)
-
非叶子节点的结构为:
n p0 k1 p1 k2 p2 … kn pn 节点的关键字个数 指针0 关键字1 指针1 关键字2 指针2 关键字n 指针n
所有的关键字满足:k1<k2<k3…<kn
Pi为子树更节点的指针,P(i-1)所指的子树上的关键字均小于Ki,P(i)所指的子树上的关键字均大于Ki。
B树的结构
int max;//关键字的最大个数max=m-1
int min;//非叶子节点的关键字个数最小个数min=(m-1)/2
static class Node {
int m;//B树的阶
int keynum;//关键字个数
Object[] key = new Object[m];//当前节点的关键字集合,key数组的0号位置不存数据
Node parent;//父节点指针
Node[] child