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

AVL树每次c++重复关键字的倒排索引算法

AVL树与倒排索引算法基础概念

AVL树: AVL树是一种自平衡二叉搜索树,其名称来源于其发明者Adelson-Velsky和Landis。在AVL树中,任何节点的两个子树的高度差最多为1,这种特性保证了树的平衡,从而使得插入、删除和查找操作的时间复杂度均为O(log n)。

倒排索引: 倒排索引(Inverted Index)是一种数据结构,用于存储文档集合中每个单词及其出现的文档列表。它常用于全文搜索引擎中,以快速查找包含特定单词的文档。

AVL树在倒排索引中的应用优势

  1. 高效查找:由于AVL树的自平衡特性,查找操作的时间复杂度为O(log n),这对于大规模文档集合的索引查找非常高效。
  2. 动态更新:当文档集合发生变化时(如新增、删除文档),AVL树可以高效地进行插入和删除操作,保持索引的实时性。
  3. 有序性:AVL树中的节点是有序排列的,这有助于在构建倒排索引时保持单词的排序,便于后续的查询优化。

AVL树重复关键字的倒排索引算法类型

在处理重复关键字时,倒排索引通常采用以下两种策略:

  1. 多条记录:对于每个关键字,存储所有包含该关键字的文档列表。这种方法简单直接,但可能导致索引文件较大。
  2. 计数器:除了存储文档列表外,还为每个关键字维护一个计数器,记录该关键字在文档中出现的次数。这种方法可以节省存储空间,但查询时需要额外处理计数信息。

应用场景

AVL树与倒排索引算法结合使用,广泛应用于以下场景:

  • 全文搜索引擎:快速查找包含特定单词的文档。
  • 文档管理系统:高效检索和管理大量文档。
  • 信息检索系统:在海量数据中快速定位相关信息。

可能遇到的问题及解决方法

问题1:AVL树在插入大量数据后性能下降。

原因:虽然AVL树是自平衡的,但在极端情况下(如大量连续插入操作),树的平衡性可能受到影响,导致性能下降。

解决方法

  • 优化插入操作,尽量减少连续插入的情况。
  • 定期对树进行重构,保持树的平衡性。

问题2:倒排索引文件过大,导致查询速度慢。

原因:当文档集合非常大时,倒排索引文件可能变得非常庞大,影响查询速度。

解决方法

  • 使用分片技术将索引文件分割成多个小文件,提高查询效率。
  • 采用压缩算法对索引文件进行压缩,减少存储空间和查询时间。

示例代码(C++实现AVL树插入操作):

代码语言:txt
复制
#include <iostream>
using namespace std;

struct AVLNode {
    int key;
    int height;
    AVLNode* left;
    AVLNode* right;
};

int height(AVLNode* node) {
    if (node == nullptr) return 0;
    return node->height;
}

AVLNode* newNode(int key) {
    AVLNode* node = new AVLNode();
    node->key = key;
    node->left = nullptr;
    node->right = nullptr;
    node->height = 1;
    return node;
}

AVLNode* rightRotate(AVLNode* y) {
    AVLNode* x = y->left;
    AVLNode* T2 = x->right;
    x->right = y;
    y->left = T2;
    y->height = max(height(y->left), height(y->right)) + 1;
    x->height = max(height(x->left), height(x->right)) + 1;
    return x;
}

AVLNode* leftRotate(AVLNode* x) {
    AVLNode* y = x->right;
    AVLNode* T2 = y->left;
    y->left = x;
    x->right = T2;
    x->height = max(height(x->left), height(x->right)) + 1;
    y->height = max(height(y->left), height(y->right)) + 1;
    return y;
}

int getBalance(AVLNode* node) {
    if (node == nullptr) return 0;
    return height(node->left) - height(node->right);
}

AVLNode* insert(AVLNode* node, int key) {
    if (node == nullptr) return newNode(key);
    if (key < node->key) node->left = insert(node->left, key);
    else if (key > node->key) node->right = insert(node->right, key);
    else return node; // Duplicate keys not allowed
    node->height = 1 + max(height(node->left), height(node->right));
    int balance = getBalance(node);
    if (balance > 1 && key < node->left->key) return rightRotate(node);
    if (balance < -1 && key > node->right->key) return leftRotate(node);
    if (balance > 1 && key > node->left->key) {
        node->left = leftRotate(node->left);
        return rightRotate(node);
    }
    if (balance < -1 && key < node->right->key) {
        node->right = rightRotate(node->right);
        return leftRotate(node);
    }
    return node;
}

void preOrder(AVLNode* root) {
    if (root != nullptr) {
        cout << root->key << " ";
        preOrder(root->left);
        preOrder(root->right);
    }
}

int main() {
    AVLNode* root = nullptr;
    root = insert(root, 10);
    root = insert(root, 20);
    root = insert(root, 30);
    root = insert(root, 40);
    root = insert(root, 50);
    root = insert(root, 25);
    cout << "Preorder traversal of the constructed AVL tree is \n";
    preOrder(root);
    return 0;
}

参考链接

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

相关·内容

MySQL入门必须知道知识点!

二叉-》AVL数-》红黑-》B--》B+ 二叉:每个节点最多只有两个子节点,左边子节点都比当前节点小,右边子节点都比当前节点大。...AVL:树种任意节点两个子树高度差最大为1 红黑:1.每个节点都是红色或者黑色。2.根节点是黑色。3.每个叶子节点都是黑色空节点。4.红色节点父子节点都必须是褐色。...分库分表问题:跨库查询、跨库排序、分布式事务、公共表、主键重复。 六.什么是倒排索引?有什么好处? 倒排索引:从内容到ID,好处:比较适合做关键字检索,可以控制数据总量,提高查询效率。...image.png 哈希索引:是采用一定哈希算法,把键值换算成新哈希值,检索时不需要类似B+那样从根节点到叶子节点逐级查找,只需一次哈希算法即可立刻定位到相应位置,速度非常快。...,不像B那样波动幅度大,在有大量重复键值情况下,哈希索引效率也是极低,因为存在哈希碰撞问题。

55500

数据结构:图文详解 - 动态查找、静态查找、散列查找

静态查找 定义:仅作 查找操作 面向数据结构:静态查找表 算法:顺序查找、有序查找、线性索引查找 具体介绍如下 3.1 顺序查找 具体介绍如下 ?...本文主要介绍线性索引查找算法 = 稠密索引、分块索引倒排索引。具体介绍如下: ? ---- 4....动态查找 定义:作 查找、插入 & 删除操作 面向数据结构:动态查找表 算法:二叉排序、平衡二叉排序AVL)&多路查找 具体介绍如下 4.1 二叉排序 也称:二叉查找、二叉搜索...4.2 平衡二叉排序AVL) 属于 二叉搜索一种特殊类型 特点 ? 具体介绍 ? 4.3 多路查找 具体介绍如下 ?...散列查找 定义:通过关键字获取记录 面向数据结构:散列表 算法:散列技术 具体介绍如下 5.1 散列技术 简介 ?

2.3K30
  • Carson带你学数据结构:图文详解 - 动态查找、静态查找、散列查找

    静态查找 定义:仅作 查找操作 面向数据结构:静态查找表 算法:顺序查找、有序查找、线性索引查找 具体介绍如下 3.1 顺序查找 具体介绍如下 3.2 有序查找 主要算法有:二分查找、插值 & 斐波那契...具体如下: 区别主要在于:比较元素(中间元素)计算 3.3 线性索引查找 面向数据结构:索引表 关于 索引 介绍如下 本文主要介绍线性索引查找算法 = 稠密索引、分块索引倒排索引。...动态查找 定义:作 查找、插入 & 删除操作 面向数据结构:动态查找表 算法:二叉排序、平衡二叉排序AVL)&多路查找 具体介绍如下 4.1 二叉排序 也称:二叉查找、二叉搜索 特点...作用 & 应用场景 4.2 平衡二叉排序AVL) 属于 二叉搜索一种特殊类型 特点 具体介绍 4.3 多路查找 具体介绍如下 多路查找类型介绍 & 对比...散列查找 定义:通过关键字获取记录 面向数据结构:散列表 算法:散列技术 具体介绍如下 5.1 散列技术 简介 5.2 散列函数设计(构造方法) 简介 即,该如何构造出 散列函数 具体构造方法介绍

    53720

    数据结构-常用查找算法

    不断重复上述过程,直到查找成功,或所有查找区域无记录,查找失败为止。...这背后利用原理就是倒排索引倒排索引具体原理: 获取关键词,搜索引擎会爬取互联网上几乎所有的信息,然后将每条信息/每篇文档进行分词,所谓分词就是将一大段文字变为一个个关键词。...建立倒排索引,获取到关键词以后,我们就可以针对关键词建立倒排索引,就是将关键词与该关键词出现位置,即哪篇文章,对应起来。除此之外,还需要指明该关键词在文章中具体位置,为了快速飘红显示。...AVL) 平衡二叉是一种二叉排序,其中每个节点左子树和右子树高度差至多等于1。...之所以又称AVL是因为有两位数学家G.M.Adelsom-Velskii和E.M.Landis发明了一种解决平衡二叉算法

    2K20

    检索技术核心 笔记

    所以,AVL 和红黑这样平衡性更强二叉检索,在实际工作中应用更多。除了树结构以外,另一种数据组织方式是跳表。跳表也具备二分查找能力,理想跳表检索效率是 O(log n)。...为了保证跳表检索空间平衡,跳表为每个节点随机生成层级,这样实现方式比 AVL 和红黑更简单。...这种根据具体内容或属性反过来索引文档标题结构,我们就叫它倒排索引(Inverted Index)。...检索算法基础 AVL 和红黑是做了平衡二叉检索,而跳表使用随机函数......跳表是可以代替二叉检索 二分查找不是用来解决哈希冲突 对文档排好序以后,创建倒排索引时间代价是:O(n) ,依次遍历和分析文档,然后插入倒排表 同时存在是取集合交集,那么结果个数一定不会大于最小集合

    79320

    讲透学烂二叉(二):图中定义&各类型特征分析

    平衡二叉搜索分类: 平衡二叉搜索一般分为两类: 严格维护平衡高度控制在log2n,使得每次操作都能使得时间复杂度控制在O(logn),例如AVL,红黑; 非严格维护平衡,不能保证每次操作都控制在...伸展基本概念 AVL每次删除或添加结点时都需要使用旋转操作平衡二叉,以获得最好查找效率,伸展是另一种二叉,它不需要高度或平衡因子这些平衡信息。...B-搜索,从根结点开始,对结点内关键字(有序)序列进行二分查找,如果命中则结束,否则进入查询关键字所属范围儿子结点;重复,直到所对应儿子指针为空,或已经是叶子结点; B特性 定义任意非叶子结点最多只有...B+和B不同之处 B+主要分为索引结点和叶子结点,索引结点为内部结点,主要用于存储关键字,不再存储数据,这样一个索引结点空间就小多了(一次IO操作可以读取更多关键字),叶子节点是数据记录存储地方...索引结点中关键字按升序排列。

    1.5K00

    Mysql中索引

    Unique(唯一索引):索引列必须唯一,但允许有空值,若是组合索引,则列值组合必须保持唯一。 Key(普通索引),是MySQL中基本索引类型,允许列中有空值,重复值。...FULLTEXT(全文索引):全文索引类型为FULLTEXT,在定义索引列上支持值全文查找,允许在这些索引列中插入重复值和空值。...MySQL使用SPATIAL关键字进行扩展,使得能够用于创建正规索引类似的语法创建空间索引。...采用哈希算法,和hashmap类似,之需要一次哈希算法就可以马上定位,速度非常快,本质就是把索引列换算成哈希值,根据这个哈希值进行定位查找。...哈希索引缺点 哈希索引没有办法利用索引完成排序 不能进行多字段查询 在有大量重复键值情况下,哈希索引效率也是很低(哈希碰撞问题) 不支持范围查询 如何高效设计索引数据结构 MySQL存储结构

    3.3K20

    为什么MySQL数据库索引选择使用B+

    它是一种弱平衡二叉(由于是若平衡,可以推出,相同节点情况下,AVL高度低于红黑),相对于要求严格AVL来说,它旋转次数变少,所以对于搜索、插入、删除操作多情况下,我们就用红黑。...(3)应用 1、广泛用于C++STL中,Map和Set都是用红黑实现; 2、著名Linux进程调度Completely Fair Scheduler,用红黑管理进程控制块,进程虚拟内存区域都存储在一颗红黑树上...(B是开区间,也就是说B不允许关键字重复,B+允许重复); 3、为所有叶子节点增加一个链指针; 4、所有关键字都在叶子节点出现(稠密索引)....(且链表中关键字恰好是有序); 5、非叶子节点相当于是叶子节点索引(稀疏索引),叶子节点相当于是存储(关键字)数据数据层; 6、更适合于文件系统; ?...2、B+查询效率更加稳定:由于非终结点并不是最终指向文件内容结点,而只是叶子结点中关键字索引。所以任何关键字查找必须走一条从根结点到叶子结点路。

    1.6K10

    C++】常用查找算法

    通过每次排除一半元素,二分查找能够快速定位目标元素。时间复杂度为O(log n)。 哈希表查找:利用哈希表数据结构实现查找算法。哈希表根据关键字哈希值存储元素,并提供快速查找操作。...通过将关键字映射到哈希表索引位置,可以在常数时间内(平均情况下)找到目标元素。哈希表查找平均时间复杂度是O(1),但在最坏情况下可能达到O(n)。...二叉搜索查找:利用二叉搜索数据结构实现查找算法。二叉搜索是一颗有序二叉,对于每个节点,左子树中所有节点值小于当前节点值,右子树中所有节点值大于当前节点值。...平衡二叉搜索查找:为了解决二叉搜索在某些情况下退化成链表问题,引入了平衡二叉搜索(如AVL、红黑)。...它不像二分查找每次都将查找范围一分为二,而是根据目标值与数组元素分布情况,在靠近目标值位置更有可能找到目标元素。

    13810

    MySQL数据库索引选择为什么使用B+而不是跳表?

    ,其到叶子点NULL指针每条路径都包含相同数目的黑节点; 6、每条路径都包含相同黑节点; (3)应用 1、广泛用于C++STL中,Map和Set都是用红黑实现; 2、著名Linux进程调度...中TreeMap实现; B/B+ 说了上述三种:二叉查找AVL和红黑,似乎我们还没有摸到MySQL为什么要使用B+作为索引实现,不要急,接下来我们就先探讨一下什么是B。...(B是开区间,也就是说B不允许关键字重复,B+允许重复); 3、为所有叶子节点增加一个链指针; 4、所有关键字都在叶子节点出现(稠密索引)....(且链表中关键字恰好是有序); 5、非叶子节点相当于是叶子节点索引(稀疏索引),叶子节点相当于是存储(关键字)数据数据层; 6、更适合于文件系统; 非叶子节点(比如5,28,65)只是一个...2、B+查询效率更加稳定:由于非终结点并不是最终指向文件内容结点,而只是叶子结点中关键字索引。所以任何关键字查找必须走一条从根结点到叶子结点路。

    66420

    内存吞金兽(Elasticsearch)那些事儿 -- 数据结构及巧妙算法

    倒排索引是一种特别为搜索而设计索引结构,倒排索引先对需要索引字段进行分词,然后以分词为索引组成一个查找,这样就把一个全文匹配查找转换成了对查找,这是倒排索引能够快速进行搜索根本原因。...然后 ES 按照单词来给商品记录做索引,就形成了上面那个表一样倒排索引。当我们搜索关键字“苹果手机”时候,ES 会对关键字也进行分词,比如说,“苹果手机”被分为“苹果”和“手机”。...然后,ES 会在倒排索引中去搜索我们输入每个关键字分词,搜索结果应该是: TERM DOCID 苹果 666,888 手机 888 666 和 888 这两条记录都能匹配上搜索关键词,但是 888...ES 存储引擎存储倒排索引时,肯定不是像我们上面表格中展示那样存成一个二维表,实际上它物理存储结构和 MySQL InnoDB 索引是差不多,都是一颗查找。...通过对词典中单词前缀和后缀重复利用,压缩了存储空间; 2)查询速度快。O(len(str))查询时间复杂度。

    49420

    程序员必须了解知识点——你搞懂mysql索引机制了吗?

    但每种查找算法都只能应用于特定数据结构之上。...,因为二叉它是都有两个分支,但是两个分支的话,会导致一个效果,就是每次我们在查找数据时候,类似于二分查找,但是二叉也有自己不太好地方,大家可以看我们上图中二叉索引格式,在左边节点会比较短一点...,一个右旋,为了保持平衡需要N多次旋转,这样旋转其实是很浪费时间每次新增或者删除时候,都要经历N多次旋转,效率太低了 推荐大家一个网站,可以直接看到AVL操作过程,有不了解同学可以去看一看...,就是最长子树高度,只要不超过最短子树两倍,就可以了,同时在红黑中它引入了红和黑两个节点信息,有了这些信息它可以帮助我们做一个平衡,在AVL有旋转保持平衡,而红黑有了旋转和变色两种来保持平衡,...红黑AVL进阶,它损失了一部分平衡性能,但是维护了我们插入和删除数据高效,虽然它损失了一部分性能,但是它依然是一个平衡,既然是平衡,他最长子树,不超过最短子树两倍,那意味着如果最短子树是

    45511

    虾皮面经汇总 -- C++后端

    平衡二叉AVL)。它是一棵空或它左右两个子树高度差绝对值不超过1,并且左右两个子树都是一棵平衡二叉。...B+: 有n棵子树非叶子结点中含有n个关键字(b是n-1个),这些关键字不保存数据,只用来索引,所有数据都保存在叶子节点(b是每个关键字都保存数据)。...同一个数字会在不同节点中重复出现,根节点最大元素就是b+最大元素。 B与B+区别: B每个节点都存储数据,所有节点组成这棵。...B中叶节点包含关键字和其他节点包含关键字是不重复,B+索引项只包含对应子树最大关键字和指向该子树指针,不含有该关键字对应记录存储地址。...B+中每个节点(非根节点)关键字个数范围为m/2(向上取整),m,具有n个关键字节点包含(n)棵子树。 B+中查找,无论查找是否成功,每次都是一条从根节点到叶节点路径。

    55810

    Java后端面试学习知识总结——数据库:MySQL

    1.4索引模块 索引 1.运用二分搜索来创建索引。 2.运用AVL和红黑来创建索引。 3.运用B-Tree来创建索引。 4.运用B+来创建索引(MySQL索引结构)。...所以我们需要更稳定索引结构,此时AVL和红黑就跳进了我们脑海。 2.运用AVL和红黑来创建索引。   ...如果一个非叶节点有n个子节点,则该节点关键字数等于n-1。 所有节点关键字是按递增次序排列,并遵循左小右大原则。   在AVL或者红黑中,插入或者删除后不满足条件需要对进行旋转。...非叶子节点子节点数=关键字数(来源百度百科)(根据各种资料这里有两种算法实现方式,另一种为非叶节点关键字数=子节点数-1(来源维基百科),虽然他们数据排列结构不一样,但其原理还是一样Mysql...参考:深入理解索引AVL、B-、B+关系 平衡二叉、B、B+、B* 理解其中一种你就都明白了

    92030

    2021年最新大厂php+go面试题集(二)

    6.mysqlmyisam索引结构是什么样子 MyISAM引擎使用B+Tree作为索引结构,索引文件叶节点data域存放是 数据记录地址,指向数据文件中对应值,每个节点只有该索引值...AVL 是一种高度平衡二叉,所以查找效率非常高,但是,有利就有弊, AVL 为了维持这种高度平衡,就要付出更多代价。...每次插入、删除都要做调整, 就比较复杂、耗时 AVL查询性能更稳定,如果更新频繁的话,红黑更好。...(1)红黑查询性能略微逊色于AVL,因为他比avl会稍微不平衡最多一层, 也就是说红黑查询性能只比相同内容avl最多多一次比较, (2)红黑在插入和删除上完爆avlavl...每次插入删除会进行大量平衡度计算, 而红黑为了维持红黑性质所做红黑变换和旋转开销,相较于avl为了维持 平衡开销要小得多 5.什么情况下用rabbitmq,什么情况下用

    60720

    常用算法和数据结构 面试_数据结构与算法面试题80道

    红黑应用场景:红黑是一种不是非常严格平衡二叉,没有AVLtree那么严格平衡要求,所以它平均查找,增添删除效率都还不错。广泛用在C++STL中。如map和set都是用红黑实现。...5.B+ B+是B一个升级版,B+是B变种树,有n棵子树节点中含有n个关键字,每个关键字不保存数据,只用来索引,数据都保存在叶子节点。是为文件系统而生。...,每个叶子节点关键字从小到大链接; (3)B+根节点关键字数量和其子节点个数相等; (4)B+非叶子节点只进行数据索引,不会存实际关键字记录指针,所有数据地址必须要到叶子节点才能获取到,...所以每次数据查询次数都一样; 特点: 在B基础上每个节点存储关键字数更多,层级更少所以查询数据更快,所有指关键字指针都存在叶子节点,所以每次查找次数都相同所以查询速度更稳定; 应用场景...动态规划:将问题分解成重复子问题,每次都寻找左右子问题解中最优解,一步步得到全局最优解.重复子问题可以通过记录方式,避免多次计算。

    70120

    图解:数据结构中6种「」,大鹏问你心中有数吗?

    这样结构设计,使得查找目标节点非常方便,可以通过关键字和当前节点对比,很快就能知道目标节点在该节点左子树还是右子树上,方便在中搜索目标节点。...保持平衡目的是可以控制查找、插入和删除在平均和最坏情况下时间复杂度都是O(log n),相比普通二叉最坏情况时间复杂度是 O(n) ,AVL把最坏情况复杂度控制在可接受范围,非常合适对算法执行时间敏感类应用...B非常适合保存在磁盘中数据读取,因为每次读取都会有一次磁盘IO,高度降低减少了磁盘IO次数。...B常用于实现数据库索引,典型实现,MongoDB索引用B实现,MySQLInnodb 存储引擎用B+存放索引。...❞ ❝有一个1G大小一个文件,里面每一行是一个词,词大小不超过16字节,内存限制大小是1M,求频数最高100个词 ❞ ❝1000万字符串,其中有些是重复,需要把重复全部去掉,保留没有重复字符串

    1.3K51

    BTree和B+Tree详解

    B+索引是B+在数据库中一种实现,是最常见也是数据库中使用最为频繁一种索引。B+B代表平衡(balance),而不是二叉(binary),因为B+是从最早平衡二叉演化而来。...因此若想二叉查询效率尽可能高,需要这棵二叉是平衡,从而引出新定义——平衡二叉,或称AVL。...平衡二叉AVL Tree) 平衡二叉AVL)在符合二叉查找条件下,还满足任何节点两个子树高度最大差为1。...下面的两张图片,左边是AVL,它任何节点两个子树高度差<=1;右边不是AVL,其根节点左子树高度为3,而右子树高度为1; 如果在AVL中进行插入或删除节点,可能导致AVL失去平衡...B-Tree相对于AVLTree缩减了节点个数,使每次磁盘I/O取到内存数据都发挥了作用,从而提高了查询效率。

    45810

    各种树区别

    可以相对减少磁盘IO次数。MongoDB索引就是用B实现。 B也是一种自平衡,在进行插入和删除操作时也需要对结点进行旋转等操作。...为了解决这些问题,出现了B+。 B+ B+每个非叶子结点存放元素只用于索引作用,所有数据保存在叶子结点。...所有的叶子结点中包含了全部元素信息,及指向含这些元素记录指针,且叶子结点本身依关键字大小自小而大顺序链接。 所有的中间节点元素都同时存在于子节点,在子节点元素中是最大(或最小)元素。...但是在插入和删除操作上,AVL每次插入删除会进行大量平衡度计算,红黑是牺牲了严格高度平衡优越条件为代价,它只要求部分地达到平衡要求,结合变色,降低了对旋转要求,从而提高了性能。...红黑算法时间复杂度和AVL相同,但统计性能比AVL更高,所以在插入和删除中所做后期维护操作肯定会比红黑要耗时好多,但是他们查找效率都是O(logN),所以红黑应用还是高于AVL.

    99930

    【MySQL一】开发人心里都该有的那颗 B

    B+索引是B+在数据库中一种实现,是最常见也是数据库中使用最为频繁一种索引。 B+B代表平衡(balance),而不是二叉(binary),因为B+是从最早平衡二叉演化而来。...平衡二叉AVL Tree) 定义 平衡二叉AVL)在符合二叉查找条件下,还满足任何节点两个子树高度最大差为1。...下面的两张图片,左边是AVL,它任何节点两个子树高度差<=1;右边不是AVL,其根节点左子树高度为3,而右子树高度为1; ?...平衡二叉 如果在AVL中进行插入或删除节点,可能导致AVL失去平衡,这种失去平衡二叉可以概括为四种姿态:LL(左左)、RR(右右)、LR(左右)、RL(右左)。 它们示意图如下: ?...B-Tree相对于AVLTree缩减了节点个数,使每次磁盘I/O取到内存数据都发挥了作用,从而提高了查询效率。

    62720
    领券