`
richyzhang
  • 浏览: 1713 次
  • 性别: Icon_minigender_1
  • 来自: 上海
文章分类
社区版块
存档分类
最新评论

一些树的结构备忘

阅读更多
B+ tree
ISAM tree
AVL(平衡树)
二叉树

二叉树对上面几个有用的东西是中序遍历

AVL的定义是各个节点其左右节点的高度相差不超过1.实现时,每个节点中会含有一个该节点高度的字段来存放这个信息.
insert操作后的重新平衡策略:
1.如果新建立的节点是w,则从w开始向上遍历,找这样第一个x,x的爷爷是不平衡的节点z,x的父亲就是y.
2.将x y z按其中序遍历的序列重新命名成 a b c
3. 将a和c放到b下面,将a b c原来的子树放到a 和 c下面,同时修改各层的高度属性

ALV树到ISAM树的突破是,一个节点中可以存放n个key,n+1个指针,有利于在磁盘等设备上一次性存取大量数据.实际上,B 树的突破也在于此.

ISAM树
ISAM树相对B树要简单,其核心思想是把key建立成固定的索引,数据只放在leaf上,如果数据多出来,则在leaf上创建一个长链表.直接挂在树上的叫primary pages,加出来的链表叫做 Overflow pages,二者合起来就是leaf pages. 而非non-leaf pages就是 entries/index pages

B+ tree
则将ISAM和合B tree 结合, 它的数据也只放在叶节点,根和中间的节点永远是索引,但B+ tree不实用overflow pages. B+树的索引同B树一样,是在新建和删除记录时构建的
B+ tree的建立记录时,根据叶节点是否已满/索引节点是否已满,要采取不同的操作,有3种情况
1. 都不满,则直接放入在适当的位置即可
2. 叶节点已满,索引不满, 对半劈开叶节点,把叶节点中间的值做key放入索引表,索引指向新劈开的两个叶节点.然后将新建的记录放到合适的新劈开的叶节点中去
3. 都满.劈开叶节点,劈开索引节点,直到摆放合适为止.

Fill Factor在B+ tree中的作用是定义了每个节点(page)中最少的key的数量比例.如fill factor是50%, key是4,则最少的key的数量就是2.当一个节点中的key<2时,就要进行合并.
分享到:
评论

相关推荐

    《心灵支配树》备忘1

    《心灵支配树》备忘1主要探讨的是一个与树形结构相关的算法问题,涉及树的同构性质和求解特定子树的最大点权和。在这个问题中,目标是找到一种方法来有效地处理树的结构,以便在强制选择1号节点作为根节点后,能够...

    易语言备忘录

    5. **数据结构**:为了有效管理备忘录条目,程序可能使用了数据结构,如列表或树形结构,来组织和检索信息。易语言提供了一系列的数据类型和结构,使得开发者可以轻松实现这些功能。 6. **错误处理**:任何软件都...

    记事簿 备忘录

    例如,使用链表实现备忘录的动态添加和删除,使用树结构进行分类管理等。这些数据结构的选择和使用,不仅确保了程序的高效运行,也使得数据的管理更为灵活。 此外,MFC还提供了丰富的控件类,如CEdit用于文本输入,...

    个人备忘录

    为了存储和管理备忘信息,系统需要一个合适的数据结构。常见的选择有链表、数组、树或者数据库。考虑到查询效率和数据安全性,通常会选择使用数据库,如SQLite,因为它轻量级且易于集成到应用程序中。每条备忘可以被...

    备忘录模块

    数据结构的选择可能涉及数组、链表、树或者数据库表,具体取决于应用的需求和性能优化考虑。 2. 用户界面设计:良好的用户界面是备忘录模块的关键。用户应该能够方便地创建、编辑、查看和删除备忘录。UI设计应遵循...

    《兵种搭配》备忘1

    《兵种搭配》备忘1主要探讨的是图论中的一个问题,特别是关于树的不同构问题,以及在解决此类问题时可能出现的错误算法和数据结构的选择。在这个问题中,我们需要理解树的性质,掌握如何有效地判断两棵树是否同构,...

    beiwanglu.rar_备忘录代码

    1. 数据结构:备忘录应用需要存储和检索数据,所以可能用到列表、字典等基本数据结构,或者更复杂的数据结构如树或链表,来组织和管理备忘录条目。 2. 用户界面(UI):UI设计包括添加、删除、修改和查看备忘录的...

    临时备忘录

    【标题】:“临时备忘录”可能指的是在IT行业中,特别是在招聘流程中,用来记录或传递面试信息的临时性文档。这些文档可能是电子邮件(.eml格式),常用于通知求职者面试的时间、地点和其他相关细节。 【描述】:...

    《拆除前哨站》备忘1

    总结来说,《拆除前哨站》备忘1探讨了如何使用优先队列和并查集优化树结构的处理,特别是在动态删除节点以最大化生产值的场景中。通过学习和应用这些算法,我们可以解决类似问题,提高解决问题的效率。同时,对于...

    oracle 数据库工作备忘录

    - **索引(Indexes)**:加快查询速度的数据结构,有B树、 bitmap、R树等多种类型。 - **分区(Partitioning)**:将大表分成小部分,提高查询效率和管理便利性。 - **SQL调优**:通过分析执行计划、使用绑定变量...

    java常用数据结构及算法集锦

    分类文档 基础原则 六大设计原则 创建模式 单例模式 简单工厂模式 工厂方法模式 抽象工厂模式 原型模式 建造者模式 结构模式 代理模式 外观模式 适配器模式 装饰模式 ...备忘录模式 ...树结构业务应用

    beiwanglu.rar_VC ManagementCla_备忘录_课程设计

    备忘录管理部分可能涉及到数据结构和算法,比如链表或树形结构来存储备忘录信息,以及文本编辑和日期时间处理功能。同时,“内有课程设计文档”可能包含了该项目的需求分析、设计文档、源代码和用户手册等,这些都是...

    beiwanglu.zip_备忘录源代码

    通过阅读和分析源代码,可以了解如何在C语言中实现数据结构(如链表、树等)来存储和检索备忘录,以及如何处理用户输入和输出。 【压缩包子文件的文件名称列表】: 1. `letter.c`:这是C语言的源代码文件,其中包含...

    《哈根农场》备忘1

    在这个问题中,我们试图找到一种有效的方式,来计算在给定树结构中,选取特定数量的节点时,这些节点之间的期望距离。 首先,我们要定义核心的动态规划状态。令`dp[nd][volume]`表示当前最高点为节点`nd`,且选取了...

    《催化序列》备忘1

    8叉树是一种空间分割的数据结构,每个节点有8个子节点,适用于三维空间的索引。在这个问题中,我们可能将其应用到一维数组上,通过位运算将每个节点的儿子是否非空的状态压缩成一个`unsigned char`,从而减少存储和...

    软件体系结构设计模式作业

    7. **组合模式**:允许将对象组合成树形结构来表示“部分-整体”的层次结构。组合模式使得用户对单个对象和组合对象的使用具有一致性。 8. **策略模式**:定义一系列的算法,并将每一个算法封装起来,使它们可以...

Global site tag (gtag.js) - Google Analytics