二叉平衡树——B-树,B+树与MySQL数据库B-Tree索引
Sep 2, 2018
二叉平衡树
AVL树是带有平衡条件的二叉查找树,该平衡条件是每个节点的左子树和右子树的高度最多差1的二叉查找树。(空树的高度定义为-1。)
在该树上的所有操作的时间复杂度为O(logN)。插入过程中涉及到了单旋转和双旋转,具体实现请看。
B-树
阶为M的B-树是一棵有下列结构特性的树:
- 树的根的儿子数在2和M之间。
- 除根外,所有非树叶节点的儿子树在M/2(向上取整)和M之间。
- 所有的树叶都在相同的深度上。
- 每个节点存放至少2个,至多M个关键字。
B-树深度最多是logM/2(N)向上取整,Insert和Delete操作复杂度为O(MlogM(N)),Find操作复杂度为O(logN)。
B+树
B+树与B-树向比,增加了以下特性:
- 非叶子结点的子树指针与关键字个数相同。每个关键字不保存数据,只用来索引,所有数据都保存在叶子节点。
- 为所有叶子结点增加一个链指针。
- 所有关键字都在叶子结点出现。
MySQL数据库B-Tree索引
MySQL 聚集索引/非聚集索引简述
MyISAM和InnoDB的索引实现