B树
B树
多路平衡查找树。
多路:是说阶数,m阶B树,m是指树中所有结点的孩子结点数的最大值是m,也就是说m阶B树。
平衡:所有结点平衡因子等于0.
查找树:类似于排序树,结点内的关键字是有序的,有点类似 左 < 父结点 < 右。
1)每个结点至多有 m 棵子树,(m - 1)个关键字。
2)若根结点不是终端结点,那么至少有两棵子树。
3)除了根结点以外的所有非叶根结点至少有 [ m/2] (向上取整) 棵子树。
4)查找:排序:左 < 中 <右
5)平衡:平衡因子等于 0
6)所有的叶子结点都不存储信息
B树的查找:在B树中找结点(一般在磁盘中进行),在结点中找关键字(将结点读入内存)。
B树的插入:定位->判断是否满足[ [m/2] - 1, m -1 ] ,不满足需要分裂->中间关键字上升到父节点,两边各形成两个结点
B树的删除:要判断删完之后是否还满足定义。
非叶子结点的删除
叶子结点的删除:直接删除;兄弟
B树和B+树的区别
1)结点内的关键字 ,B树中有n棵子树就有 n -1 个关键字,B+树有n棵子树就有 n 个关键字。
2)关键字范围,
3)B+树叶子结点含有信息,所有非叶结点只是起到索引的作用,非叶结点的索引中只含有对应子树的最大关键字和指向该子树的指针。
4)B+树叶子结点含有所有关键字,即叶子结点和非叶结点的关键字会有重复;但是B树包含的关键字中,叶子和非叶子结点不会有重复
5)B+树的查找得是叶子结点上的关键字才可以
6)B+树中有两个头指针,一个是指向根结点;另一个是指向关键字最小的叶子结点。