数据结构 B树、B-树

——B树指针

B树即 Balance tree 也就是平衡树,它是在搜索树的基础上,维持每个节点的左右子树高度之差不超过1的结构,使得搜索的平均时间复杂度为O(log N)级别。blog

——二叉搜索树class

对于任何一个节点N,其左边子树的全部节点值小于N 其右边子树的全部节点的值大于N基础

给点一个查询值,从根节点值开始,一次判断当前节点的值和查询值的大小关系,选择进入左子树或右子树搜索

——B-树im

一颗M=3的B-树链表

本质是多路搜索树,全部序列关键值分布在整颗树中。每一个非叶子节点包含 关键字序列  和指向下一分层区间节点的指针查询

  • 定义任意非叶子结点最多只有M个儿子;且M>2;
  • 根结点的儿子数为[2, M],除根结点之外的非叶子结点的儿子数为[M/2, M];
  • (非叶子节点至少含M/2个儿子,确保避免出现退化成相似链表形式,至关于确保了树的总体高度控制在O(logN)级别)
  • 每一个结点存放至少M/2-1(取上整)和至多M-1个关键字;(至少2个关键字)
  • 非叶子结点的关键字个数=指向儿子的指针个数-1(即关键字做为划分区间边界值)
  • 非叶子结点的关键字按照从左向右升序全部叶子结点位于同一层;

搜索过程:img

  • 从根节点开始,因为每一个节点包含一个不大于M的递增序列,作一次二分查找
  • 若查找到该值,那么查找结束,不然根据查找边界进入下一层区间
  • 直到叶子节点也没有查找到,那么查找失败