首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

当二分搜索树有n个节点时,最可能的高度是多少?

二分搜索树(Binary Search Tree, BST)是一种特殊的二叉树,它的每个节点都有一个可比较的键(以及相关联的值),并且对于每个节点,其左子树中的所有键都小于节点的键,而右子树中的所有键都大于节点的键。

当二分搜索树有n个节点时,最可能的高度是多少?

基础概念

  1. 二分搜索树(BST):如上所述,是一种特殊的二叉树,满足左子树上所有节点的值均小于其根节点的值,右子树上所有节点的值均大于其根节点的值。
  2. 树的高度:树的高度是从根节点到最远叶子节点的最长路径上的节点数。

相关优势

  • 快速检索、插入和删除操作。
  • 可以高效地进行范围查询。

类型

  • 平衡二叉树(如AVL树、红黑树)。
  • 非平衡二叉树。

应用场景

  • 数据库索引。
  • 符号表实现。
  • 自动补全和拼写检查。

问题解答

对于具有n个节点的二分搜索树,其最可能的高度取决于树的平衡性。在最佳情况下(即树完全平衡),树的高度将是最小的,接近log₂(n)。但在最坏情况下(即树完全不平衡,例如所有节点都只有左子节点或只有右子节点),树的高度可以是n。

为什么这样

  • 在平衡二叉树中,每次插入或删除操作后,树会通过旋转等机制来保持平衡,从而确保树的高度保持在log₂(n)的数量级。
  • 在非平衡二叉树中,如果插入和删除操作导致树持续向一侧倾斜,那么树的高度可能会接近n。

如何解决高度不平衡的问题

  1. 使用平衡二叉树结构:如AVL树或红黑树,这些树结构在每次插入或删除后会自动进行平衡调整。
  2. 定期重构树:如果树的高度变得过高,可以通过重新插入所有节点来重建平衡。
  3. 随机化插入顺序:通过随机化插入顺序,可以降低树变得高度不平衡的概率。

示例代码(Python):

以下是一个简单的二分搜索树节点类和一个用于插入节点的函数。这个示例不包含平衡机制,仅用于说明基本概念。

代码语言:txt
复制
class TreeNode:
    def __init__(self, key):
        self.key = key
        self.left = None
        self.right = None

def insert(root, key):
    if root is None:
        return TreeNode(key)
    else:
        if key < root.key:
            root.left = insert(root.left, key)
        else:
            root.right = insert(root.right, key)
    return root

在实际应用中,为了保持树的平衡,可以使用更复杂的平衡二叉树实现,如AVL树或红黑树。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

数据结构与前端开发(四)-树

树的最底部节点称之为叶节点,当一颗树的叶数量数量为满时,该树可以称之为满二叉树。 ? 二分搜索树 二分搜索树也是二叉树,拥有二叉树的特性。...因为二分搜索树的特性,父节点一定比所有左子节点大,比所有右子节点小。那么当需要删除父节点时,势必需要拿出一个比父节点大的节点来替换父节点。这个节点肯定不存在于左子树,必然存在于右子树。...AVL 树改进了二分搜索树,在 AVL 树中任意节点的左右子树的高度差都不大于 1,这样保证了时间复杂度是严格的 O(logN)。...基于此,对 AVL 树增加或删除节点时可能需要旋转树来达到高度的平衡。 实现 因为 AVL 树是改进了二分搜索树,所以部分代码是于二分搜索树重复的,对于重复内容不作再次解析。..._getBalanceFactor(node) // 当需要右旋时,根节点的左树一定比右数高度高 if (factor > 1 && this.

50341

分析时间与空间复杂度《三钻数据结构与算法笔记》

y轴是Operations就是操作复杂度的指数; x轴是Elements就是n我们的循环次数 ; 这里我们可以看到在n比较小的时候,复杂度是相对稳定的; 但是当n越来越大时,Big-O复杂度就会急速飙升...时间复杂度是 O(n),无论是前序、中序或者后序每一个节点都会访问一次,并且仅访问一次; 所以就是二叉树的节点总数,也就是O(n)的线性时间复杂度; 图的遍历:时间复杂度是多少?...时间复杂也是O(n), 这里的n就是图里面的节点总数; 搜索算法:DFS、BFS时间复杂度是多少? DFS是深度优先,BFS是广度优先算法。...不管是深度优先还是广度优先,因为访问的节点只访问一次,所以时间复杂度也是O(n)的。(n指的是搜索空间里面的节点总数) 二分查找:时间复杂度是多少?...- O(n) 图的遍历:时间复杂度是多少? - O(n) 搜索算法:DFS、BFS时间复杂度是多少? - O(n) 二分查找:时间复杂度是多少?

76421
  • 关于跳表,这么解释你肯定能听懂

    很容易想到二分查找,将查找的时间复杂度降到 O(LogN) 具体来说,我们把链表中的一些节点提取出来,作为索引,类似于二叉搜索树,得到如下结构: 这里我们把 10、30、50、80 提取出来作为一级索引...,这样搜索的时候就可以使用二分查找来减少比较次数了。...简单来说,跳表就是支持二分查找的有序链表 具体的搜索算法如下: /* 如果存在 x, 返回 x 所在的节点, 否则返回 x 的后继节点 */ private Node find(x) {...如果不更新索引,就可能出现两个索引节点之间数据非常多的情况,极端情况下跳表就会退化为单链表,从而使得查找效率从 O(LogN) 退化为 O(N)。...跳表中,每一层索引都是一个有序的单链表,元素插入到单链表的时间复杂度为 O(1),我们索引的高度最多为 LogN,当插入一个元素 x 时,最坏的情况就是元素 x 需要插入到每层索引中,所以插入数据的最坏时间复杂度是

    27520

    二分查找树

    研究问题都讲究由简到繁,那就让我们先来看看最简单的情形——分岔数最小的情形——二叉树。 二叉树的每层节点只有两个节点,这表示只有两个小类。定位属于哪个小类时,需要做比较。...《自然哲学的数学原理》 二分查找法 基于二分查找树数据结构的搜索算法称为“二分查找法”。 二分查找树是一个递归定义,所以很容易得出递归版的二分查找法。...假设树的节点总数为N,则根据《菜鸟也能“种”好二叉树!》一文中的结论,高度等于logN,从而时间复杂度等于O(logN)。...有兴趣的朋友也可以翻回去看看。 具体实操上,和“Top N”的方法一样,我们用尾节点“补漏”被删节点。 ? ? ? 上面三张图形象描绘了整个替换、下推调整的过程。...但为了“炫技”,笔者在这里就挑最复杂的单向链表式、非递归版算法来实现一下:) ? ? ? ? 最坏情况无外乎删除根节点——这种情况下下推的距离最长——极限情况下,要下推整个二分查找树的高度。

    87020

    数据结构之AVL树

    平衡树和AVL 我们先来回忆一下二分搜索树所存在的一个问题:当我们按顺序往二分搜索树添加元素时,那么二分搜索树可能就会退化成链表。例如,现在有这样一颗二分搜索树: ?...接下来我们依次插入如下五个节点:7、6、5、4、3。按照二分搜索树的特性,这棵树就会变成如下这样: ?...可见在极端的情况下,如果往一棵二分搜索树添加元素时,完全是按照顺序添加的,那么此时二分搜索树就会退化成链表,O(logn) 时间复杂度退化到 O(n)。...除此之外,由于AVL树本质上是一棵平衡版的二分搜索树,所以我们还需要检查AVL树的二分搜索树性质。因为,调整AVL树的过程中可能会破坏二分搜索树的性质,此时就需要将其“矫正”过来。...接下来,我们看看AVL树是怎么维持平衡的。首先,我们得知道AVL树什么时候会发生平衡性被打破的情况。 与其他树形结构一样,当AVL树添加或删除节点时,其平衡性就有可能会被打破。如下图所示: ?

    48610

    02 复杂度分析_pythoner学习数据结构与算法系列

    14 高级搜索 05 哈希表、映射、集合 15 红黑树和AVL树 06 树、二叉树、二叉搜索树 16 位运算 07 泛型递归、树的递归 17 布隆过滤器和LRU缓存 08 分治、回溯 18 排序算法...一维的二分查找 O(logn) 二叉树遍历O(n):每个节点都会访问且仅访问一次 二维矩阵(有序)的二分查找O(n) 归并排序——所有排序的时间复杂度都是O(nlogn) 三、常见面试题 1.二叉树的遍历...O(n),n代表二叉树的节点总数 通过主定理得到 或者遍历(不论前、中、后序),每个节点都会访问且仅访问一次, 复杂度是线性于树的节点数的,所以是 O(n)的时间复杂度 同理(图的节点也是每个都会访问且仅访问一次...):图的遍历, 时间复杂度也是O(n),n是图的结点总数 搜索算法:DFS(深度优先搜索)、BFS(广度优先搜索),时间复杂度是多少?...不论DFS还是BFS时间复杂度都是 O(n),n是空间结点总数,每个节点都要 访问且仅访问一次 二分查找:时间复杂度是多少?

    53531

    6.3 基于二分搜索树、链表的实现的集合Set复杂度分析

    2.二叉搜索树的情况 在基于二叉搜索树的情况下,增加、查询、删除的与二叉搜索树的深度有关,每次操作均为从根节点到某一一支子树的叶子节点之间进行操作,时间复杂度为0(h),h表示二叉搜索树的高度(层数)。...二叉搜索树复杂度如下: ? 2.1 探究链表情况下的n与二叉搜索树的h的关系 ?...下面对n与h关系进行推导: 2.1.1 采用满二叉树的情况进行分析(最优情况) 采用满二叉树(每个节点都有左右节点,除了叶子节点)来进行分析的原因为满二叉树是一种极端情况,如下图: ?...从上图中关于h层总共有多少个节点有如下推导: ? 假设节点个数为n个则有如下关系: ? 针对都是log级别的关系,底数是多少不影响它是log级别的则有: ?...2.1.2 单个孩子情况----二叉搜索树最坏情况(节点数等于其高度) 比如:下面这种二叉搜索树 ? 对于这种只有单个孩子的情况,此时二叉搜索树退化成了链表,此时的时间复杂度为O(n)。

    39520

    《面试官:谈谈你对索引的认知》系列之B-树

    从上图B-树的简化图,我们可以发现几个显著特点: 所有键值分布在整颗树中(索引值和具体data都在每个节点里),叶节点具有相同的深度; 任何一个关键字出现且只出现在一个结点中; 搜索有可能在非叶子结点结束...(最好情况O(1)就能找到数据); 在关键字全集内做一次查找,性能逼近二分查找 平衡二叉树 VS B-树 我们知道传统用来搜索的平衡二叉树有很多,如 AVL 树,红黑树等。...其次平衡二叉树的高度相对较大为 log n(底数为2),这样逻辑上很近的节点实际可能非常远,无法很好的利用磁盘预读(局部性原理)。...B-树多叉的好处非常明显,有效的降低了B-树的高度(为底数很大的 log n,底数大小与节点的子节点数目有关,一般一棵B-树的高度在 3 层左右)。...B-树的查找 我们来看看B-树的查找,假设每个节点有 n 个 key值,被分割为 n+1 个区间,注意,每个 key 值紧跟着 data 域,这说明B-树的 key 和 data 是聚合在一起的。

    31130

    ElasticSearch索引 VS MySQL索引

    我们都知道即便是对一个有序链表进行查询效率也不高,由于它不能使用数组下标进行二分查找,所以时间复杂度是o(n) 但我们也可以巧妙的优化链表来变相的实现二分查找,如下图: ?...我们可以为最底层的数据提取出一级索引、二级索引,根据数据量的不同,我们可以提取出 N 级索引。 当我们查询时便可以利用这里的索引变相的实现了二分查找。...由于索引存放于磁盘中,所以我们要尽可能的减少与磁盘的 IO(磁盘 IO 的效率与内存不在一个数量级) 通过上图可以看出,我们要查询一条数据至少得进行 4 次IO,很明显这个 IO 次数是与树的高度密切相关的...那怎样才能降低树的高度呢? ? 我们可以尝试把二叉树变为三叉树,这样树的高度就会下降很多,这样查询数据时的 IO 次数自然也会降低,同时查询效率也会提高许多。 这其实就是 B+ 树的由来。...假设我们写入的主键数据是无序的,那么有可能后写入数据的 id 小于之前写入的,这样在维护 B+树 索引时便有可能需要移动已经写好数据。

    1.4K20

    【89期】为什么选择B+树作为数据库索引结构?

    一般来说,B树的根节点常驻于内存中,B树的查找过程是这样的:首先,由于一个节点内包含多个(比如,是256个)关键码,所以需要先顺序/二分来查找,如果找到则查找成功;如果失败,则根据相应的引用从磁盘中读入下一层的节点数据...B树的定义 B树就是平衡的多路搜索树,所谓的m阶B树,即m路平衡搜索树。根据维基百科的定义,一棵m阶B树需满足以下要求: 每个结点至多含有m个分支节点(m>=2)。...示例,一棵3阶的B树是这个样子: B树的高度(了解) 假定一棵B树非空,具有n个关键字、高度为h(令根结点为第1层)、阶数为m,那么该B树的最大高度和最小高度分别是多少?...最大高度 当树的高度最大时,则每个结点含有的关键字数应该尽量少。...p-1)*[2+2p+2p^2+...+2p^(h-2)]≥ 2p^(h-1)-1 从而推导出 h ≤ log_p[(n+1)/2] + 1 (其中p为底数,p=┌m/2┐) 最小高度 当树的高度最低时

    18530

    【112期】面试官:为什么选择B+树作为数据库索引结构?谈谈你的理解

    一般来说,B树的根节点常驻于内存中,B树的查找过程是这样的:首先,由于一个节点内包含多个(比如,是256个)关键码,所以需要先顺序/二分来查找,如果找到则查找成功;如果失败,则根据相应的引用从磁盘中读入下一层的节点数据...B树的定义 B树就是平衡的多路搜索树,所谓的m阶B树,即m路平衡搜索树。根据维基百科的定义,一棵m阶B树需满足以下要求: 每个结点至多含有m个分支节点(m>=2)。...示例,一棵3阶的B树是这个样子: ? B树的高度(了解) 假定一棵B树非空,具有n个关键字、高度为h(令根结点为第1层)、阶数为m,那么该B树的最大高度和最小高度分别是多少?...最大高度 当树的高度最大时,则每个结点含有的关键字数应该尽量少。...(p-1)*[2+2p+2p^2+...+2p^(h-2)] ≥ 2p^(h-1)-1 从而推导出 h ≤ log_p[(n+1)/2] + 1 (其中p为底数,p=┌m/2┐) 最小高度 当树的高度最低时

    93120

    拜托,面试别再问我跳表了!

    跳表是一个随机化的数据结构,实质就是一种可以进行二分查找的有序链表。 跳表在原有的有序链表上面增加了多级索引,通过索引来实现快速查找。 跳表不仅能提高搜索性能,同时也可以提高插入和删除操作的性能。...这是不是很像平衡二叉树,现在这颗树元素比较少,可能不太明显,我们来看个元素个数多的情况。 ? 可以看到,上一级元素的个数是下一级的一半,这样每次减少一半,就很接近平衡二叉树了。...学习过平衡二叉树的同学都知道,它的时间复杂度与树的高度成正比,即O(log n)。 所以,这里跳表的时间复杂度也是O(log n)。...(这里不一步步推倒了,只要记住,查询时每次减少一半的元素的时间复杂度都是O(log n),比如二叉树的查找、二分法查找、归并排序、快速排序) 空间复杂度 我们还是以标准的跳表来分析,每两个元素向上提取一个元素...; (5)每个索引节点包含两个指针,一个向下,一个向右; (6)跳表查询、插入、删除的时间复杂度为O(log n),与平衡二叉树接近; 彩蛋 为什么Redis选择使用跳表而不是红黑树来实现有序集合?

    63330

    文心一言 VS 讯飞星火 VS chatgpt (253)-- 算法导论18.2 6题

    当我们在 B 树中进行搜索时,我们首先从根节点开始。由于每个节点最多有 t 个键,我们可以使用二分查找来定位要搜索的键。然后,我们根据定位到的键来决定是向左子树还是向右子树继续搜索。...B树是一种自平衡树数据结构,它保持数据有序,因此对于任何节点,其子节点的键值是比自身小的最大键值和比自身大的最小键值。在B树中进行搜索时,每次比较可以将搜索范围减少一半,类似于二分查找。...假设我们正在查找一个键 K 的节点,并且 B-Tree 有 n 个节点。...灵小智: 对于给定的B树,假设树的高度为h,节点包含的关键字数目为t,在每个节点内采用二分查找的情况下,搜索一个关键字的时间复杂度可以被界定为O(log t)。...chatgpt: 假设我们有一个 B-Tree,每个节点内采用二分查找的方式进行搜索。B-Tree 是一种自平衡的搜索树数据结构,其高度与节点数 n 之间存在关系 h = O(log(n))。

    12020

    数据结构与算法(3)——树(二叉、二叉搜索树)树LeetCode相关题目整理

    ); 结点的高度:是指从该节点到最深节点的路径长度,树的高度是指从根节点到书中最深结点的路径长度,只含有根节点的树的高度为0。...(B的高度为2,B—F—J); 树的高度:是树中所有结点高度的最大值,树的深度是树中所有结点深度的最大值,对于同一棵树,其深度和高度是相同的,但是对于各个结点,其深度和高度不一定相同; 二叉树 如果一棵树中的每个结点有...二叉树的类型 严格二叉树:二叉树中的每个节点要么有两个孩子结点,要么没有孩子结点 ? 满二叉树:二叉树中的每个结点恰好有两个孩子结点且所有叶子结点都在同一层 ?...完全二叉树:在定义完全二叉树之前,假定二叉树的高度为h;对于完全二叉树,如果将所有结点从根节点开始从左至右,从上至下,依次编号(假定根节点的编号为1),那么僵得到从1~n(n为结点总数)的完整序列,在遍历过程中对于空指针也赋予编号...访问树中所有结点的过程叫作树的遍历,在遍历过程中,每个结点只能被处理一次,尽管其有可能被访问多次;根据结点处理顺序的不同,。

    1.1K20

    二叉树及其作用浅析

    也就是说在一个树中查找一个数字, 第一次在根节点判断,第二次在第二层节点判断 以此类推,树的高度是多少就会判断多少次 树的高度和节点的关系就是以2为底,树的节点总数n的对数。...平衡二叉树是对二叉搜索树(又称为二叉排序树)的一种改进。二叉搜索树有一个缺点就是,树的结构是无法预料的,随意性很大,它只与节点的值和插入的顺序有关系,往往得到的是一个不平衡的二叉树。...在最坏的情况下,可能得到的是一个单支二叉树,其高度和节点数相同,相当于一个单链表,对其正常的时间复杂度有O(lb n)变成了O(n),从而丧失了二叉排序树的一些应该有的优点。...O(logn):当数据增大n倍时,耗时增大logn倍(这里的log是以2为底的,比如,当数据增大256倍时,耗时只增大8倍,是比线性还要低的时间复杂度)。...二分查找就是O(logn)的算法,每找一次排除一半的可能,256个数据中查找只要找8次就可以找到目标。

    3.6K21

    Python实现二分法搜索

    二分法是一种效率比较高的搜索方法,时间复杂度为 O(log2n) 。 假设有一个1~100之间的数字,你来猜这个数是多少,每猜一次可以得到三种回答:正确、大了或小了。如何保证用最少的次数猜对?...每次递归搜索,数据列表的长度都会缩小“一半”,当找到目标数据或数据列表的长度为0时,递归结束。...根据二叉搜索树的特性,在向二叉搜索树中插入数据时,就已经先判断了插入数据与根节点数据的大小,小的插入到左子树中,大的插入到右子树中,所以在二叉搜索树中搜索数据时,可以比较数据与根节点的数据大小,递归判断是在左子树还是在右子树中搜索...这种搜索方式与二分法搜索的思路非常相似。 二叉搜索树可以理解为二分法实现的一种数据结构,但并不完全是,因为二叉搜索树只是满足了二分法的思想,与二分法是有区别的。...而在二叉搜索树中,左右子树的节点数量取决于添加的顺序,并不一定满足数量相等或最多相差一个。

    1.5K20

    女朋友问我:为什么 MySQL 喜欢 B+ 树?我笑着画了 20 张图

    假设我们现在用数组来存储索引,比如下面有一个排序的数组,如果要从中找出数字 3,最简单办法就是从头依次遍历查询,这种方法的时间复杂度是 O(n),查询效率并不高。...当每次插入的元素都是二叉查找树中最大的元素,二叉查找树就会退化成了一条链表,查找数据的时间复杂度变成了 O(n),如下动图演示: 由于树是存储在磁盘中的,访问每个节点,都对应一次磁盘 I/O 操作(假设一个节点的大小...比如,下面这个平衡二叉查找树的高度为 5,那么在访问最底部的节点时,就需要磁盘 5 次 I/O 操作。...因此,当树的节点越多的时候,并且树的分叉数 M 越大的时候,M 叉树的高度会远小于二叉树的高度。...,可能涉及复杂的树的变形,比如下面这个动图是删除 B 树根节点的过程: B+ 树的插入也是一样,有冗余节点,插入可能存在节点的分裂(如果节点饱和),但是最多只涉及树的一条路径。

    70310

    【ES三周年】一文搞懂 ElasticSearch 和 MySQL 索引的优缺点

    我们都知道即便是对一个有序链表进行查询效率也不高,由于它不能使用数组下标进行二分查找,所以时间复杂度是o(n)但我们也可以巧妙的优化链表来变相的实现二分查找,如下图:图片我们可以为最底层的数据提取出一级索引...当我们查询时便可以利用这里的索引变相的实现了二分查找。假设现在要查询 id=13 的数据,只需要遍历 1—>7—>10—>13 四个节点便可以查询到数据,当数越多时,效率提升会更明显。...由于索引存放于磁盘中,所以我们要尽可能的减少与磁盘的 IO(磁盘 IO 的效率与内存不在一个数量级)通过上图可以看出,我们要查询一条数据至少得进行 4 次IO,很明显这个 IO 次数是与树的高度密切相关的...那怎样才能降低树的高度呢?图片我们可以尝试把二叉树变为三叉树,这样树的高度就会下降很多,这样查询数据时的 IO 次数自然也会降低,同时查询效率也会提高许多。这其实就是 B+ 树的由来。...假设我们写入的主键数据是无序的,那么有可能后写入数据的 id 小于之前写入的,这样在维护 B+树 索引时便有可能需要移动已经写好数据。如果是按照递增写入数据时则不会有这个考虑,每次只需要依次写入即可。

    2.1K11

    Java数据结构与算法:多路查找树

    1.如图B树通过重新组织节点,降低了树的高度. 2.文件系统及数据库系统的设计者利用了磁盘预读原理,将一个节点的大小设为等于一个页(页得大小通常为4k),这样每个节点只需要一次I/O就可以完全载入. 3...有三个子节点的节点叫三节点,三节点要么没有子节点,要么有三个子节点. 2-3树是由二节点和三节点构成的树。...(只要是B树都满足这个条件) 2.有两个子节点的节点叫二节点,二节点要么没有子节点,要么有两个子节点. 3.有三个子节点的节点叫三节点,三节点要么没有子节点,要么有三个子节点 4.当按照规则插入一个数到某个节点时...当插入10时,应当在 10 - 12 -14 这个位置,但是这时满了,因此向上层看, 16-26 也满了 2....,或已经是叶子结点 3.关键字集合分布在整颗树中, 即叶子节点和非叶子节点都存放数据. 4.搜索有可能在非叶子结点结束 5.其搜索性能等价于在关键字全集内做一次二分查找 B+树的介绍 B+树是B树的变体

    59940

    innodb为什么选择B+ Tree而不是跳表,Redis为什么选择跳表而不是B+ Tree

    为了让链表也能支持二分查找,我们可以在链表的基础上加上一层目录,即一层索引链表: 当我们访问某个节点时,先访问索引链表,通过索引链表进行二分过滤,在索引链表找到结点后,顺着索引链表的结点向下,找到原始链表的结点...以实现二分查找,从而可以快速定位节点位置,提示查找效率: 当原始链表有n个结点,则索引的层数为log(n)-1,在每一层的访问次数是常量,因此查找结点的平均时间复杂度为O(logn)。...---- 跳表和B+ tree在数据插入方面的性能 B+ tree插入性能分析 B+ Tree本质是一种多路平衡树,关键在于"平衡"二字,它的含义是子树们的高度层级尽量一致(最多差一个层级),这样在搜索的时候...---- 跳表插入性能分析 当我们需要往跳表中插入数据时,是通过随机函数产生当前节点的层数,然后更新每一层索引,往其中加入一个节点,如果当前层数不足,就新添加一个索引层。...小结 B+ 树是多路平衡搜索树,扇出高,三层高度即可容纳2kw左右的数据,相同情况下,跳表则需要大约24层,假设层高对应磁盘IO,那么B+树的读性能会比跳表要好,因此Innodb选择了B+树做索引 redis

    2.4K20
    领券