C++ b树合并

标签 c++ boost b-tree

例如,我有以下 b 树模型,每个节点都包含标签/值对。树表示优先级(或优先级),根最高,叶子最低(但这是特定于应用程序的)。我想将一个新的树部分合并到父节点中,新部分包含潜在的公共(public)标记/值对,一直向下到叶节点上方的节点(完全重复的新树部分不会被合并)。例如

指示的现有树(标记、值)对:

            A,0
 ,----------,-------------,
B,1        B,2           B,3
      ,-------------,
     C,1           C,2

要合并的新树:

               A,0
                |
               B,3
          ,-----------,
         C,1         C,2

最终合并树:

            A,0
 ,----------,-----------------,
B,1        B,2               B,3
      ,-------------,    ,-----------,
     C,1           C,2  C,1         C,2

问题:是否有一个优雅的 C++ 解决方案来解决这个使用 std 容器的 b 树合并,或者是否可以使用像 boost 这样的库?谢谢。

最佳答案

您可以使用 Kasper Peeter 的 tree.hh库,它是 GPLv2 和 GPLv3。

这是一个类似于 N 叉树的 STL 实现。

documentation说有一个可变算法,名为 merge,可以合并两棵树。它还解释了它是如何实现的。

关于C++ b树合并,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8513004/

相关文章:

search - B树适合自动建议/自动完成Web表单吗?

c++ - 获取给定数字集中具有相同数字频率的组数

c++ - 这里有更多 C++ 中未定义的行为,很抱歉这个问题,但又是 UB

c++ - 无锁数据结构中的非 POD 类型

c++ - 使用 Boost.MPI 库的目的是什么?

database - 如何在磁盘上布局 B-Tree 数据?

c++ - 在磁盘上实现无锁数据结构

c++ - 如何通过Windows Defender SmartScreen保护?

c++ - 对象创建的特殊方式?

c++ - Boost Thread 库或 Pthreads 的显着差异是什么?