二叉搜索树

即二叉查找树,它或者是空树,或者满足以下性质二叉树:

  1. 任意非空左节点值小于根节点
  2. 任意非空右节点值大于根节点
  3. 任意节点左右子树为二叉搜索树
  4. 节点值不相等

平衡二叉树(AVL树)

任意节点的左右子树的高度差小于1的二叉搜索树。平衡二叉树针对二叉搜索树极端情况下退化为链表,查找,插入和删除时间复杂度退化为O(n)

B树

m阶的B树满足以下性质:

  1. 根节点至少拥有2个分支
  2. 节点分支数等于节点内元素个数+1,任意结点至多拥有m棵子树,分支数超过m会重新构建节点(由底向上)
  3. 非根非叶节点至少存在ceil(m/2)个分支(ceil是向上取整,比如2.2就是3)
  4. 节点内元素值按照递增次序进行排列,左边结点内所有元素值均小于右边节点内的元素
  5. 叶子节点在同一层,高度一致。
B数相比平衡二叉树优势
B树相对于平衡二叉树的不同是,每个节点包含的关键字增多了,特别是在B树应用到数据库中的时候,数据库充分利用了磁盘块的原理(磁盘数据存储是采用块的形式存储的,每个块的大小为4K,每次IO进行数据读取时,同一个磁盘块的数据可以一次性读取出来)把节点大小限制和充分使用在磁盘快大小范围;把树的节点关键字增多后树的层级比原来的二叉树少了,减少数据查找的次数和复杂度

B+树

B+树由B树发展而来,区别于B树,具有以下特点:

  1. 中间节点分支数k等于等于节点内元素个数k(B树中是k-1个元素),中间节点元素作为索引不保存数据,数据均保存在叶子节点。
  2. 叶子结点中包含全部元素的信息,叶子节点之间存在单向指针相连,叶子节点元素值由小至大顺序链接
B+树相对于B树优势
  1. B+树中间节点不存储数据,占用内存更少,同一盘块所能容纳中间节点更多。一次性读入内存中的需要查找的关键字也就越多,降低了I/O读写次数
  2. B+树查询必须到叶子节点,B树查询在中间节点元素匹配时可直接返回,所以B+树查询稳定性优于B树
  3. B+树叶子节点指针利于范围查询

粥于于
9 声望1 粉丝

代码搬运工


下一篇 »
Java集合总结

引用和评论

0 条评论