lotus

贵有恒何必三更眠五更起 最无益只怕一日曝十日寒

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理
  1846 随笔 :: 0 文章 :: 109 评论 :: 288万 阅读

B+树是一种多路平衡查找树,是对B树的扩展。它的特点是:

  • 非叶节点只有索引作用,具体数据都存放在叶节点中。
  • 所有叶节点构成一个有序链表,可以按照键的排序顺序遍历全部记录。
  • 每个节点最多有M个子节点,每个非叶子节点(除根节点)至少有ceil(M/2)个子节点,如果根节点不是叶子节点,那么至少有两个子节点。
  • 有k个子节点的非叶子节点拥有k-1个键,键按照升序排列。
  • 所有叶子节点在同一层。

B+树的优点在于:

  • 在内部节点上不包含数据信息,因此能够存放更多的键,提高查询效率。
  • 数据存放的更加紧密,具有更好的空间局部性和缓存命中率。
  • 叶子节点相连,便于区间查找和遍历。

要用JAVA实现B+树,您可以参考以下的一些网页:

您也可以参考以下的一段JAVA代码示例,来看看如何定义一个B+树类和一个节点类:

//定义一个B+树类
public class BPlusTree <T, V extends Comparable<V>>{
    //B+树的阶
    private Integer bTreeOrder;
    //B+树的非叶子节点最大拥有的节点数量(同时也是键的最大数量)
    private Integer maxNumber;
    private Node<T, V> root;
    private LeafNode<T, V> left;
    
    //定义一个节点类
    abstract class Node<T, V extends Comparable<V>>{
        //父节点
        protected Node<T, V> parent;
        //子节点
        protected Node<T, V>[] childs;
        //键(子节点)数量
        protected Integer number;
        //键
        protected Object keys[];
        
        //查找
        abstract T find(V key);
        //插入
        abstract Node<T, V> insert(T value, V key);
    }
}


---   todo ...
posted on   白露~  阅读(121)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)
历史上的今天:
2021-07-01 DDD 中的那些模式 — CQRS
2021-07-01 领域驱动设计系列 (六):CQRS
2021-07-01 中台架构与实现:基于ddd和微服务 下载_终于有人把前台、中台、后台都讲明白了..
2021-07-01 中台架构与实现——基于DDD和微服务
2021-07-01 电商之下:服务类商品订单履约系统如何设计
2021-07-01 从0到1设计订单系统的思路
2021-07-01 京东后台:订单履约系统设计(上)
点击右上角即可分享
微信分享提示