B树和B+树

一、B树

    1. B树:平衡多路查找树(不止二叉),节点中有多个关键字,左小右大的顺序;

    2. 假设是5阶树(M=5),则枝节点的关键字数量 >= ceil(M/2)-1 且 <= M-1,即5阶树的关键字数量为2~4;

    3. 插入:当插入第五个元素时(大于4),把中间的节点升级成父节点,左右分别变成左右子节点;
        删除:当删除元素之后导致关键字数等于1或0时(小于2),需要合并节点:先从子节点取,子节点没有符合条件时就向父节点取

    4. 对比平衡二叉树:每个节点包含的关键字增多了,树的层级比原来的二叉树少了,减少查找的次数和复杂度

B树和B+树

 删除规则:

B树和B+树

 

二、B+树

    1. B+树:B树的升级版,充分利用节点空间,查询效率更高。

    2. 规则:1.非叶子结点不保存关键字记录的指针,只保存关键字本身做数据索引;
                  2.叶子节点保存了父节点的所有关键字记录的指针,只有叶子节点才有指针,所以每次查询的次数都一样。
                  3.叶子节点的关键字从小到大有序排列,左边结尾数据会保存右边节点开始数据的指针(串起来了)
                  4.所有非叶子节点的子节点数 = 关键字数量

    3. 特点:1.B+数层级更少:每个节点存的关键字数比B树更多,所以层级更少查询更快;
                  2.查询速度更稳定:只有叶子节点上才有地址的指针数据;
                  3.天然具备排序功能:所有叶子节点构成一个有序链表,区间查询更方便;
                  4.全节点遍历更快:不像B树需要遍历每一层,有利于数据库扫全表

    4. B树比B+树的优点:如果经常访问的数据离跟节点很近,则速度更快。

B树和B+树