例如,我有以下 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/