数据结构之B树、B+树、B*树
1、应用背景
二叉查找树、AVL树、红黑树等都属于二叉树的范围,查找的时间复杂度是O(log 2N),与树的深度相关,那么降低树的深度自然会提高查找效率。
但是我们面对这样一个实际问题:大规模数据存储中,树节点存储的元素数量是有限的(如果元素数量非常多的话,查找就退化成节点内部的线性查找了),这样导致二叉查找树结构由于树的深度过大而造成磁盘I/O读写过于频繁,进而导致查询效率低下。
因此,为了减少磁盘I/O的次数,必须降低树的深度,将“瘦高”的树变得“矮胖”。一个基本的想法就是:
- 每个节点存储多个元素
- 摒弃二叉树结构,采用多叉树
这样就引出来了一个新的查找树结构 ——多路查找树。根据AVL树给我们的启发,一颗平衡多路查找树可以使得数据的查找效率保证在O(logN)这样的对数级别上。
1.1 机械硬盘结构
为什么树的深度会与磁盘I/O相关呢?这要从硬件层面来说明。
机械硬盘的结构图如下:
硬盘中一般会有多个盘片组成,每个盘片包含两个面,每个盘面都对应地有一个读/写磁头。
每个盘面都被划分为数目相等的磁道,并从外缘的“0”开始编号,具有相
数据结构之B树、B+树、B*树相关推荐
- 数据结构与算法笔记(十三)—— 树与树的算法
一.树的概念 树(英语:tree)是一种抽象数据类型(ADT)或是实作这种抽象数据类型的数据结构, 用来模拟具有树状结构性质的数据集合.它是由 n(n>=1)个有限节点组成一个具有层次关 系的集 ...
- 【数据结构-树】1.树与森林(树的遍历、树的存储方法、并查集的实现)
树的定义 树是一种数据结构,它是由 n(n>=1)n(n>=1)n(n>=1) 个有限结点组成一个具有层次关系的集合.把它叫做 "树" 是因为它看起来像一棵倒挂的 ...
- 数据结构与算法之判断一棵树是否为搜索二叉树、判断一棵树是否是完全二叉树
数据结构与算法之判断一棵树是否为搜索二叉树.判断一棵树是否是完全二叉树 目录 判断一棵树是否为搜索二叉树 判断一棵树是否是完全二叉树 1. 判断一棵树是否为搜索二叉树 概念:搜索树就是中序遍历的结果是 ...
- 我的软考之路(四)——数据结构与算法(2)之树与二叉树
上篇博文主要介绍的是数据结构的线性结构,我们这篇博文介绍非线性结构-树与二叉树,我先介绍树的一些基本概念,树的遍历,再介绍二叉树相关概念和特性,以及二叉树的遍历,最后再树与二叉树的对比,总结. 树为了 ...
- 【技术点】数据结构--B树系列之B+树(五)
文章目录 前言 B+树的结构 Key & Data 叶子节点保存数据:减少I/O的设计 中间节点的索引作用 链表的作用:范围查询 B+树的操作 插入 删除 B+树总结 B*树 总结 前言 前面 ...
- 数据结构(十六)——左高树(含合并过程详细图解)
文章目录 前言 左高树 什么是左高树? 为什么要使用左高树? 最大左高树实现及复杂度分析 节点类和最大左高树类 合并方法 插入(push).删除(pop) 初始化 左高树合并图解 前言 看到左高树的时 ...
- 数据结构练手小项目(AVL树、哈希表、循环链表、MySQL数据库)
文章目录 前言 正文(无删减) 我的想法(删减修改版) 数据导入与数据存储 功能实现 数据结构 用户结构 SIM卡结构 AVL树数据结构 哈希表结构 数据表 用户表 SIM卡表 时间安排 前言 本月主 ...
- Python数据结构11:树的实现,树的应用,前中后序遍历,二叉查找树BST,平衡二叉树AVL树,哈夫曼树和哈夫曼编码
1.概念 树一种基本的"非线性"数据结构. 相关术语: 节点Node:组成树的基本部分.每个节点具有名称,或"键值",节点还可以保存额外数据项,数据项根据不同的 ...
- 《数据结构与算法》(十一)- 树、森林与二叉树的转换及哈夫曼树详解
目录 前言 1. 树.森林与二叉树之间的转换 1.1 树转换为二叉树 1.2. 森林转换为二叉树 1.3. 二叉树转换为树 1.4 二叉树转换为森林 1.5 树与森林的遍历 2. 哈夫曼树及其应用 2 ...
- 数据结构—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 ...
最新文章
- hibernate三级缓存概括
- base64 数据处理
- mac终端输入密码被阻止
- nor flash启动与nand flash启动的区别
- 工作多年的.NET程序员,是否建立了自己的开发知识库?分享制作电子书的经验...
- python语法基础知识案例_Python 语法速览与实战清单
- JVM Java内存区域 与 内存溢出 (系列号1)
- php7.0不出结合项,帝国CMS结合项提示“您来自的链接不存在”
- 深度学习软件资源列表
- linux系统配置设置网络端口映射,Linux 配置端口映射
- 嵌入式软件开发好,还是硬件开发好?
- wifi信号衰减与距离关系_wifi无线信号传输衰减距离计算公式
- Linux系统安全及应用详解
- rpm 如何安装mysql_如何使用rpm安装MySQL
- IDEA2021+Tomcat8+Servlet加载别人的项目时无web application导致无法进行Tomcat部署及实现Servlet程序的解决办法
- 运算放大器单电源设计
- 不会用PS、Excel更改证件照颜色没关系,用Word更改不用1分钟!
- 百度地图js轨迹展示
- 学习Masonry框架 - iOS
- 洛谷4774 BZOJ5418 NOI2018 屠龙勇士 扩展中国剩余定理 multiset