红黑树、B+Tree、B—Tree

2024-08-25 04:36
文章标签 红黑树 tree

本文主要是介绍红黑树、B+Tree、B—Tree,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

红黑树

B-Tree

这三个通常都是把内存全部加载到内存里,然后再内存中进行处理的,数据量通常不会很大。

内存一般容量都在GB级别,比如说现在常见的4G、8G或者16G。

如果要处理的数据规模非常大,大到内存根本存不下的时候。这个时候只能先存到硬盘里,硬盘呢

容量又比内存大的多,因为没有办法把大规模的数据读到内存里,所以只能分批次的把需要处理的

数据从硬盘调到内存里,进行进一步处理。

操作数据是需要CPU去执行相关的指令的,cpu是不能直接和硬盘进行交互的。硬盘里的数据必需

先调到内存里头,才能进一步和CPU进行交互,进行数据处理。可以叫做一次硬盘I/O,然而这个

访问速度是非常慢的,内存单次的访问时间是纳秒级别,但是硬盘的访问的毫秒级的,1毫秒等于

100万纳秒。

降低树高就可以减少非常耗时的硬盘操作。

B+Tree

节点之间是用指针连接成了一个链表的结构

B+Tree常被用作数据库中的索引结构,那实际上每个元素都包含指向对应记录存储地址的指针。那此时呢,结点内的元素又被称为关键字(key),通过关键字中包含的指针可以索引到数据库中的某一条记录。

B+Tree相当于数据表中的一个索引,可以通过关键字,快速定位到数据表中的某一条记录,实际

上关键字的指针指向的是数据文件中这一条(id=23)这一条的地址,其他关键字也是一样的都在最

下面画的那一排下面记录呢。B+Tree本身也是作为一个索引文件存储在硬盘里的,但在实际应用

中不一定非要以ID作为关键字,也可以将姓名作为关键字等(可以给同一个数据表构建多个不同关

键字的索引来应对各种各样的查询需求)。

因为叶子节点包含了所有的关键字,所以要顺序查找所有的关键字的记录,就像遍历链表一样,

非常的方便。如果要随机查找某一关键字,也需要挨个遍历去寻找呢?那么B+Tree的叶子节点不

就是解决这个问题吗?可以帮助我们快速定位到叶子节点某一关键字,相当于给叶子节点建立的索

引,目的就是实现以log级别的复杂度,去查找叶子节点上的某一关键字记录。

所以整个B+Tree是一套多级索引结构,目的就是为了加速查询的速度。我们只需要通过指向根节

点的指针,就可以以log级别的复杂度查找到指定关键字对应的记录。

这篇关于红黑树、B+Tree、B—Tree的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1104559

相关文章

树(Tree)——《啊哈!算法》

树 什么是树?树是一种特殊的图,不包含回路的连通无向树。 正因为树有着“不包含回路”这个特点,所以树就被赋予了很多特性。 一棵树中的任意两个结点有且仅有唯一的一条路径连通。一棵树如果有n个结点,那么它一定恰好有n-1条边。在一棵树中加一条边将会构成一个回路。 一棵树有且只有一个根结点。 没有父结点的结点称为根结点(祖先)。没有子结点的结点称为叶结点。如果一个结点既不是根结点也不是叶

226 Invert Binary Tree

//226 Invert Binary Tree//算法思路:主要使用递归算法public class Solution {public TreeNode invertTree(TreeNode root) {//1 出口 空节点if (root==null)return null;//2 递归 调用自己TreeNode left = root.left;TreeNode right = ro

红黑树的旋转

红黑树的基本性质 红黑树与普通的二叉搜索树不同,它在每个节点上附加了一个额外的属性——颜色,该颜色可以是红色或黑色。通过引入这些颜色,红黑树能够维持以下 5 个基本性质,以确保树的平衡性: 每个节点是红色或黑色。根节点是黑色。所有叶子节点(NIL 节点)是黑色。如果一个节点是红色的,那么它的两个子节点都是黑色的(即,红色节点不能有红色子节点)。从任一节点到其每个叶子节点的所有路径上都包含相同数

C++笔记19•数据结构:红黑树(RBTree)•

红黑树 1.简介:         红黑树,是一种二叉搜索树,但在每个结点上增加一个存储位表示结点的颜色,可以是Red或 Black。 通过对任何一条从根到叶子的路径上各个结点着色方式的限制,红黑树确保没有一条路 径会比其他路径长出俩倍,因而是接近平衡的。 当搜索二叉树退化为单支树时,搜索效率极低,为了使搜索效率高,建立平衡搜索二叉树就需要"平衡树"来解决。上一篇博客介绍了AVL树,这

Sorry!Hbase的LSM Tree就是可以为所欲为!

我们先抛出一个问题: LSM树是HBase里使用的非常有创意的一种数据结构。在有代表性的关系型数据库如MySQL、SQL Server、Oracle中,数据存储与索引的基本结构就是我们耳熟能详的B树和B+树。而在一些主流的NoSQL数据库如HBase、Cassandra、LevelDB、RocksDB中,则是使用日志结构合并树(Log-structured Merge Tree,LSM Tr

【spring】does not have member field ‘com.sun.tools.javac.tree.JCTree qualid

spring-in-action-6-samples 的JDK版本 最小是11,我使用 了22: jdk21 jdk22 都与lombok 不兼容,必须使用兼容版本, 否则报错: thingsboard 的大神解释了: java: java.lang.NoSuchFieldError: Class com

[LeetCode] 863. All Nodes Distance K in Binary Tree

题:https://leetcode.com/problems/all-nodes-distance-k-in-binary-tree/ 题目大意 求给树中,距给定 结点 指定长度的 所有结点的val 思路 tree -> graph 、 bfs 先遍历树,并用map记录每个结点的父结点 ,将树变为图,然后 bfs。 /*** Definition for a binary tree

js实现树级递归,通过js生成tree树形菜单(递归算法)

1、效果图 需求:首先这是一个数据集—js的类型,我们需要把生成一个tree形式的对象 : var data = [{ id: 1, name: "办公管理", pid: 0 },{ id: 2, name: "请假申请", pid: 1 },{ id: 3, name: "出差申请", pid: 1 },{ id: 4, name: "请假记录", pid: 2 },{ id:

【unity实战】利用Root Motion+Blend Tree+Input System+Cinemachine制作一个简单的角色控制器

文章目录 前言动画设置Blend Tree配置角色添加刚体和碰撞体代码控制人物移动那么我们接下来调整一下相机的视角效果参考完结 前言 Input System知识参考: 【推荐100个unity插件之18】Unity 新版输入系统Input System的使用,看这篇就够了 Cinemachine虚拟相机知识参考: 【推荐100个unity插件之10】Unity最全的最详细的C

树链剖分 + 后缀数组 - E. Misha and LCP on Tree

E. Misha and LCP on Tree  Problem's Link   Mean:  给出一棵树,每个结点上有一个字母。每个询问给出两个路径,问这两个路径的串的最长公共前缀。 analyse: 做法:树链剖分+后缀数组. 记录每条链的串,正反都需要标记,组成一个长串. 然后记录每条链对应的串在大串中的位置,对大串求后缀数组,最后询问就是在一些链