一.二叉排序树

1.定义: 对于一颗二叉树,它的左子树若不为空,则左子树上所有结点的值小于它的根结点的值,若右子树不为空,则右子树上的所有结点的值大于它的根结点的值。且它的左右子树也分别为二叉排序树。
2.总结:

  • 二叉排序树是以链接的方式存储,保持了链接存储结构在执行插入或删除操作上不用移动元素的优点,只要找到合适的插入和删除位置后,仅需修改链接指针即可。插入删除性能比较好。

    • 对于二叉排序树的查找,走的是根结点到要查找的结点的路径,其比较次数等于给定值的结点在二叉排序树的层数。极端情况下,最少为1次,即根结点就是要查找的结点,最多也不会超过树的深度。 也就是说二叉排序树的查找性能取决于二叉排序树的形状。
    • 对于,{35,37,47,51,58,62,73,88,93,99}所构成的二叉排序树就称为了一颗极端的右斜树,但它任是一颗二叉排序树。此时需要引入AVL树的概念。

二.平衡二叉树AVL树

  • 定义:
    二叉平衡树是一种二叉排序树,其中每一个结点的左子树和右子树的高度差至多等于1。

  • 平衡因子BF
    将二叉树上结点的左子树深度减去右子树深度的值称为平衡因子BF。

  • 当不满足平衡条件,|BF|<=1时,需要对二叉树进行旋转。(四种情况,我也没搞懂怎么旋)

         左旋,右旋,先左旋再右旋,先右旋再左旋。
    

三.多路查找树(B树)

    每个结点的孩子数可以多余两个,且每个结点可以存储多个元素。

1.2-3树:(最简单的B树)
- 2结点包含一个元素和两个孩子(或没有孩子)。
- 3结点包含两个元素和三个孩子(或没有孩子)。
- 并且2-3树的所有叶子结点都在同一层上。

2.-3-4树
    同上
   4结点包含3个元素和4个孩子(或没有孩子);

3.B树

  • 结点最大的孩子书称为B树的阶。2-3树是3阶B树,2-3-4树是4阶B树。
  • 如果结点不是叶结点,则其至少有两颗子树。
  • 每一个非根的分支结点都有k-1个元素和k个孩子,其中⌈m/2⌉<=k<=m。
  • 各一个叶子结点n都有n-1个元素,其中⌈m/2⌉<=k<=m。
  • 所有叶子结点都位于同意层次。
  • 所有结点包含以下信息数据(n,A0,K1,A1,K2,A2….,Kn,An),其中,K1…Kn为关键字,且K1 < Kn;A0.。。。An为指向子树根节点的指针,且指针Ai-1所指子树中所有关键字均要小于Ki,An所指子树中的关键字均要大于Kn。
  • 总结
  • 在B树上查找过程是一个顺指针查找结点和在结点中查找关键字的交叉过程。
  • 由于B树每个结点可以具有比二叉树多得多的元素,所以与二叉树的操作不同,它们减少了必须访问结点和数据块的数量,从而提高了性能。可以说,B树的数据结构就是为了内外存的数据交互准备的。
  • 例子:比如说一个B树的阶树为1001(即1个结点包含1000个关键字),高度为2。那么它可以存储超过10亿个关键字。我们只要将根结点持久的保留在内存中,那么在这棵树上,寻找一个关键字至多需要读取两次硬盘即可。

4.B+树
提出原因:对于B数,遍历时,会多次对根节点进行遍历,造成损耗。

  • B树中每个元素只会在该树中出现一次,有可能在叶子结点,也有可能在分支结点。而在B+树中,出现在分子结点中的元素会被当作他们在该分支结点位置的中序后继者(叶子结点)中再次出现。另外,每个叶子结点都会保存一个指向后一个叶子结点的指针。
  • 所以,B+树中所有的叶子结点包含了全部的关键字信息,及指向包含这些关键字记录的指针,叶子结点本身依照关键字大小自小而大顺序排列。
  • 所有分支结点可以看成索引,结点中仅含有其子树中的最大(最小)关键字。
  • B+树结构特别适合带有范围的查找,比如说查找年龄19-22岁的学生人数,可以通过从根结点出发找到第一个19岁的学生,再在叶子结点中按照顺序查找到符合范围的所有记录。

二叉排序树,AVL树,B树(多路查找树),B+树相关推荐

  1. 数据结构—2-3树、2-3-4树、B树、B+树等多路查找树的原理详解

    详细介绍了多路查找树中的2-3树.2-3-4树.B树.B+树的概念的区别,以及它们的应用场景. 文章目录 1 多路查找树的概述 1.1 索引概述 1.2 多路查找树的引出 2 2-3树 2.1 2-3 ...

  2. 对分查找的最多次数_Java数据结构与算法:多路查找树

    作者:subeiLYhttps://blog.csdn.net/m0_46153949/article/details/106742330 本章思维导图 二叉树与B树 二叉树的问题分析二叉树的操作效率 ...

  3. 数据结构 多路查找树 ---------B树和B+树的简单介绍

    参考链接:微信公众号 程序员小灰 https://mp.weixin.qq.com/s/rDCEFzoKHIjyHfI_bsz5Rw https://mp.weixin.qq.com/s/jRZMMO ...

  4. 第 12 章 多路查找树

    第 12 章 多路查找树 1.二叉树与 B 树 1.1.二叉树存在的问题 二叉树的操作效率较高,但是也存在问题, 请看下面的二叉树 二叉树需要加载到内存的,如果二叉树的节点少,没有什么问题,但是如果二 ...

  5. 《数据结构与算法》(十九)- 多路查找树

    目录 前言 1. 多路查找树(B树) 1) 2-3树 1.1) 2-3树的插入实现 1.2) 2-3树的删除实现 2) 2-3-4树 3) B树 4) B+树 2. 总结 原文地址:https://p ...

  6. 数据结构与算法之多路查找树(2-3树、2-3-4树、B树、B+树)

    目录 为什么使用多路查找树 二叉树存在的问题 多路查找树 2-3树 2-3树插入的操作 2-3树删除的操作 2-3-4树 2-3-4树的插入操作 2-3-4树的删除操作 B树 B+树 总结 为什么使用 ...

  7. HTTP协议漫谈 C#实现图(Graph) C#实现二叉查找树 浅谈进程同步和互斥的概念 C#实现平衡多路查找树(B树)...

    HTTP协议漫谈 简介 园子里已经有不少介绍HTTP的的好文章.对HTTP的一些细节介绍的比较好,所以本篇文章不会对HTTP的细节进行深究,而是从够高和更结构化的角度将HTTP协议的元素进行分类讲解. ...

  8. 查找、检索 算法-总结5 多路查找树/B~树/B+树

    源地址:http://hxraid.javaeye.com/blog/611105 在前面专题中讲的BST.AVL.RBT都是典型的二叉查找树结构,其查找的时间复杂度与树高相关.那么降低树高自然对查找 ...

  9. 多路查找树之2-3树的删除原理 - 数据结构和算法81

    多路查找树之2-3树的删除原理 让编程改变世界 Change the world by program 本节视频具体讲解2-3树的删除原理 ...... 省略,具体请看视频讲解 ...... [buy ...

最新文章

  1. java8中的时间处理6 - 格式化
  2. 【组队学习】【29期】5. 李宏毅机器学习(含深度学习)
  3. 设置全屏_教你在直播中如何显示全屏弹幕,增加与粉丝的互动
  4. python3怎样交换数字顺序_python中怎么交换列的顺序
  5. apache hadoop_通过Apache Hadoop大规模扩展Apache Solr实时实时索引
  6. 计算机软考网络管理员题,2020年计算机软考网络管理员考前测试题及答案
  7. linux vmware硬盘,给vmware的Linux虚拟机增添硬盘
  8. Windows下GIt入门试验配置教程单机版
  9. java堆缓冲区,Java NIO之Buffer(缓冲区)
  10. filters获取data中的数据
  11. 2017 Multi-University Training Contest - Team 7:1002. Build a tree(递归)
  12. 【干货】前端工程与性能优化
  13. freeCAD transform stepamp;amp; stp to stl logging py2exe 打包
  14. 网赚APP资源下载类网站源码
  15. 豆瓣上的一条关于泰坦尼克的影评1
  16. 开启 Kerberos 安全的大数据环境中,Yarn Container 启动失败导致作业失败
  17. c++_设计一个 Studnet(学生)类
  18. Java经典面试题总结(附答案)-java经典面试题大全总结以及整理
  19. Linus 批评英特尔的 LAM 代码,拒绝将其合并到内核
  20. NRF52832官方SDK介绍

热门文章

  1. Butterfly主题安装文档(三)之主题配置2
  2. SOC课程——⑤——常见的逻辑门的符号图
  3. linux nacos集群搭建最简单最详细版
  4. 正向、逆向工程在UML图中的应用
  5. 如何修改C盘下的hosts文件
  6. c#实现文件重命名操作
  7. 经典单片机控制算法:PID
  8. matlab第八课:图像分析(下)
  9. 天津工业大学计算机研究生专业课,【计算机考研】院校信息-天津工业大学
  10. 什么是coms coms设置图解