二叉搜索树
即二叉查找树,它或者是空树,或者满足以下性质二叉树:
- 任意非空左节点值小于根节点
- 任意非空右节点值大于根节点
- 任意节点左右子树为二叉搜索树
- 节点值不相等
平衡二叉树(AVL树)
任意节点的左右子树的高度差小于1的二叉搜索树。平衡二叉树针对二叉搜索树极端情况下退化为链表,查找,插入和删除时间复杂度退化为O(n)
B树
m阶的B树满足以下性质:
- 根节点至少拥有2个分支
- 节点分支数等于节点内元素个数+1,任意结点至多拥有m棵子树,分支数超过m会重新构建节点(由底向上)
- 非根非叶节点至少存在ceil(m/2)个分支(ceil是向上取整,比如2.2就是3)
- 节点内元素值按照递增次序进行排列,左边结点内所有元素值均小于右边节点内的元素
- 叶子节点在同一层,高度一致。
B数相比平衡二叉树优势
B树相对于平衡二叉树的不同是,每个节点包含的关键字增多了,特别是在B树应用到数据库中的时候,数据库充分利用了磁盘块的原理(磁盘数据存储是采用块的形式存储的,每个块的大小为4K,每次IO进行数据读取时,同一个磁盘块的数据可以一次性读取出来)把节点大小限制和充分使用在磁盘快大小范围;把树的节点关键字增多后树的层级比原来的二叉树少了,减少数据查找的次数和复杂度
B+树
B+树由B树发展而来,区别于B树,具有以下特点:
- 中间节点分支数k等于等于节点内元素个数k(B树中是k-1个元素),中间节点元素作为索引不保存数据,数据均保存在叶子节点。
- 叶子结点中包含全部元素的信息,叶子节点之间存在单向指针相连,叶子节点元素值由小至大顺序链接
B+树相对于B树优势
- B+树中间节点不存储数据,占用内存更少,同一盘块所能容纳中间节点更多。一次性读入内存中的需要查找的关键字也就越多,降低了I/O读写次数
- B+树查询必须到叶子节点,B树查询在中间节点元素匹配时可直接返回,所以B+树查询稳定性优于B树
- B+树叶子节点指针利于范围查询
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。