【发布时间】:2012-01-20 17:32:08
【问题描述】:
例如,我有以下 b 树模型,每个节点都包含标签/值对。树表示优先级(或优先级),根最高,叶子最低(但这是特定于应用程序的)。我想将一个新的树部分合并到父节点中,新部分包含潜在的公共标签/值对,一直到叶节点上方的节点(完全重复的新树部分不会被合并)。例如
指示现有的树(标签,值)对:
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-tree 合并,或者可以使用 boost 之类的库?谢谢。
【问题讨论】:
-
最安全的方法是手动将第二个 b-tree 的所有项插入第一个 b-tree 中。或者,看看 www.ccs.neu.edu/home/bradrui/index_files/parareorg.pdf。
-
有一个(正在开发中的)boost.btree,不确定它是否有帮助,但这里是:github.com/Beman/Boost-Btree
-
您可能还想检查 b-tree 的实现:touc.org/btree.html
-
您可以使用 boost 图形库手动完成