美文网首页Java互联网科技老男孩的成长之路
阿里面试,问了B+树,这个回答让我通过了!

阿里面试,问了B+树,这个回答让我通过了!

作者: java菲菲 | 来源:发表于2020-08-05 11:02 被阅读0次

    前言

    上周我通过阿里一面,岗位是客户端开发工程师(是的,还是java岗!)。面试过程中面试官问了B+树,回答时面试官一直点头(应该回答得还不错所以过了),今天详细讲一讲B+树

    架构师干货:设计模式+Redis+spring全家桶+学习思维脑图+Redis+MySQL+分布式+并发+微服务+性能调优

    平衡二叉树

    它是一棵空树或它的左右两个子树的高度差的绝对值不超过1,并且左右两个子树都是一棵平衡二叉树。

    B树(B-树)

    在这里插入图片描述

    m阶B树定义

    m阶B树是一棵平衡的m路搜索树,或者是空树,或者是满足以下条件:

    1. 树中的每个节点最多有m个孩子

    2. 除了根节点和叶子结点外,其他节点最少含有 (m+1)/2 个孩子

    ceil(m/2) 即是 (m+1)/2,向上取整

    1. 如果根节点不是叶子结点,则根节点最少2个孩子

    2. 所有叶子节点都在同一层,并不带任何信息

    3. 除了叶子结点,节点含有关键字属性,数目范围是 [M/2 - 1,M-1],即关键字个数 = 孩子个数 - 1

    非叶子结点

    • 关键字:K[1], K[2], …, K[M-1],且K[i] < K[i+1],即关键字时有序的。

    • 孩子指针:P[1], P[2], …, P[M]

    • P[1]指向关键字小于K[1]的子树,P[M]指向关键字大于K[M-1]的子树,其它P[i]指向关键字属于(K[i-1], K[i])的子树。

    时间复杂度:O(nlogn)。

    优点

    B树相对于B+树的优点是,如果经常访问的数据离根节点很近,而B树的非叶子节点存储关键字数据的地址,所以这种数据检索的时候会要比B+树快。

    B+树

    image.png

    m阶B+树定义

    B+树是B树的一种变形形式,m阶B+树满足以下条件:

    (1) 每个结点至多有m个孩子。

    (2) 除根节点和叶结点外,每个结点至少有(m+1)/2个孩子。

    (3) 如果根节点不为空,根结点至少有两个孩子。

    (4) 所有叶子结点增加一个链指针,所有关键字都在叶子结点出现。

    (5) 除了叶节点,结点的孩子数目等于关键字数目。 注意,B+树中非叶子结点存储的不是关键字数据的地址,而是指向叶子结点中关键字的索引。(所以任何关键字的查找必须走一条从根结点到叶子结点的路)

    非叶子结点的子树指针P[i],指向关键字值属于[K[i], K[i+1])的子树(B-树是开区间)

    优点

    1. B+树的层级更少:相较于B树B+每个非叶子节点存储的关键字数更多,树的层级更少所以查询数据更快;

    2. B+树查询速度更稳定B+所有关键字数据地址都存在叶子节点上,所以每次查找的次数都相同所以查询速度要比B树更稳定;

    3. B+树天然具备排序功能:B+树所有的叶子节点数据构成了一个有序链表,在查询大小区间的数据时候更方便,数据紧密性很高,缓存的命中率也会比B树高。

    4. B+树全节点遍历更快:B+树遍历整棵树只需要遍历所有的叶子节点即可,而不需要像B树一样需要对每一层进行遍历,这有利于数据库做全表扫描。

    适应场景

    通常用于数据库和操作系统的文件系统中。

    结点的分裂

    • 将已满结点进行分裂,将已满节点后M/2节点生成一个新节点,将新节点的第一个元素指向父节点。

    • 父节点出现已满,将父节点继续分裂。

    • 一直分裂,如果根节点已满,则需要分类根节点,此时树的高度增加。

    优点

    能够保持数据稳定有序,其插入与修改拥有较稳定的对数时间复杂度

    总结

    咱们玩归玩,闹归闹,别拿面试开玩笑。

    B+树在面试中几乎被问烂了。除了本文提到的平衡二叉树、B树和B+树外,B+树的应用场景还有很高的话题性,比如MySQL和一些文件系统中使用的是B+树结构。

    作者:天才程序YUAN
    原文链接:https://blog.csdn.net/JAck_chen0309/article/details/105268976

    相关文章

      网友评论

        本文标题:阿里面试,问了B+树,这个回答让我通过了!

        本文链接:https://www.haomeiwen.com/subject/xrynrktx.html