首页 > 其他分享 >手撕红黑树

手撕红黑树

时间:2024-07-09 21:51:56浏览次数:9  
标签:黑树 文件 二叉树 撕红 节点 left

 

今天是个值得纪念的日子…… 

成功手撕红黑树,虽然是借鉴别人的代码,但可不是在内存中实现二叉树,而是在本地文件中!

在二进制文件中构造如下的二叉树,然后对这个二叉树实现红黑树的操作。

某节点a如果有left节点b,那么a节点的left处就记录的是b节点的文件偏移。right,parent也是如此。在进行红黑树操作时一般只改 left ,right parent, color的值,节点整体的位置在文件中不动。

 

压力测试通过~~~

 

这样就有了一个基于本地文件的key-value数据库,当有大量数据(10G以上)需要存储时,就多了一种选择。

之后加上工业强度的保障后再写一篇详细的文章。

TODO

  1. key过期时间
  2. 文件自动扩容
  3. 自动碎片整理
  4. 协程/线程安全

 

 

回想之前,只有用vb6实现了俄罗斯方块游戏;用图像处理+算法实现自动扫雷功能时有如此激动~

 

标签:黑树,文件,二叉树,撕红,节点,left
From: https://www.cnblogs.com/xiangism/p/18292793

相关文章

  • 【简易版tinySTL】 红黑树- 定义, 插入, 构建
    文章目录旋转左旋右旋左旋右旋代码实现红黑树的基本性质红黑树的插入红黑树的插入示例红黑树修复代码实现参考资料旋转对于一个平衡二叉搜索树,左子树高度为4,右子树高度为2,它们的高度差为2,破坏了平衡性(高度差<2才算平衡,因此需要调整二叉树使其平衡)二叉树最基本的......
  • 数据结构与算法-红黑树的java实现-构建红黑树
    红黑树红黑树是一种二分查找树,与普通的二分查找树不同的一点是,红黑树的每个节点都有一个颜色(color)属性。该属性的值要么是红色,要么是黑色。通过限制从根到叶子的任何简单路径上的节点颜色,红黑树确保没有比任何其他路径长两倍的路径,从而使树近似平衡。节点红黑树的节......
  • [C++][数据结构][红黑树]详细讲解
    目录1.红黑树的概念2.红黑树的性质3.红黑树节点的定义4.红黑树的结构5.红黑树的插入操作1.cur为红,p为红,g为黑,u存在且为红2.cur为红,p为红,g为黑,u不存在/u存在且为黑--单旋+变色3.cur为红,p为红,g为黑,u不存在/u存在且为黑--双旋+变色6.红黑树的迭代器1.begin()与end()2.o......
  • C++ -- 红黑树的基本操作
    目录摘要基本规则基本操作利用Graphviz库总结摘要红黑树是一种自平衡的二叉搜索树,它在插入和删除节点时,通过颜色和旋转操作保持树的平衡,确保插入、删除和查找的时间复杂度都是(O(logn))。红黑树的每个节点都有一个颜色属性,红色或黑色。通过一些规则,红黑树保持了相对......
  • Java基础:B树、B+树和红黑树的数据结构,三者区别
    B树(B-Tree)数据结构节点结构:每个节点包含多个键值和子节点指针。阶(Degree):B树的阶定义了每个节点的最小和最大键值数。对于阶为(m)的B树:每个节点最多有(m-1)个键值和(m)个子节点。每个节点(除了根节点)至少有(\lceilm/2\rceil-1)个键值和(\lceilm/......
  • 红黑树/红黑树迭代器封装(C++)
        本篇将会较为全面的讲解有关红黑树的特点,插入操作,然后使用代码模拟实现红黑树,同时还会封装出红黑树的迭代器。    在STL库中的set和map都是使用红黑树封装的,在前文中我们讲解了AVL树,对于红黑树和AVL树来说,这两种树都是效率很高的搜索二叉树,但是......
  • 拿捏红黑树(C++)
    文章目录前言一、红黑树介绍二、插入操作三、验证红黑树四、红黑树与AVL性能比较与应用五、总体代码总结前言我们之前介绍了一种AVL的高阶数据结构,在本篇文章中,我们将会介绍一种与AVL旗鼓相当的数据结构–红黑树。我们并且会对它的部分接口进行模拟实现一、红黑树......
  • 红黑树-数据结构
    平衡二叉B树每个节点可以是红或者是黑红黑树不是高度平衡的,他的平衡是“通过自己的红黑规则实现的”红黑规则每个节点是红或者为黑根节点必须是黑色如果一个节点没有子节点或者是父节点,这个节点的相应的指针属性为nil,这些nil视为叶节点,每个叶节点nil是黑色的如果某个节......
  • 重学java 58.红黑树相关集合
    现在还来得及                ——24.6.3一、TreeSet1.概述:        Treeset是set的实现类2.特点:        a.对元素进行排序        b.无索引        c.不能存null        d.线程不安全    ......
  • 红黑树详解
    1红黑树的概念红黑树,是一种二叉搜索树,但在每个结点上增加一个存储位表示结点的颜色,可以是Red或Black。通过对任何一条从根到叶子的路径上各个结点着色方式的限制,红黑树确保没有一条路径会比其他路径长出俩倍,因而是接近平衡的。2红黑树的性质 1.每个结点不是红色就是......