b树又称二叉搜索树,英文全称binary search tree ,其定义如下:
1、每个节点最多能拥有2个子节点(即每个非叶子节点最多拥有2个指针指向左右节点);
2、非叶子节点的左指针指向小于其关键字的左子树,右指针指向大于其关键字的又子树;
3、每个节点节点存储一个关键字;
查找过程:
b树的搜索从根节点开始:
如果查找的关键字和节点的关键字相等则命中,查找成功;
如果查找的关键字小于节点的关键字,则进入左子树查找;
如果查找的关键字大于节点的关键字,则进入右子树查找;
如果左右子树为空,则报告查找不到对应的关键字。
数据移动:
由于b树左右指针的特点,数据删除和插入只要修改对应指针的指向即可,因此不需要移动大段的内存数据,基本上是常数开销;
性能分析:
对于平衡二叉树(左右子树节点分布比较均匀)来说,和二分查找的性能比较接近。但是如果经过多次的数据插入和删除操作后,可能改变二叉树的结果,使平衡二叉树变成了非平衡二叉树,而导致查询性能的下降。因此b树的实际使用过程中通常需要加上平衡算法。