C++ B树合并
作为示例,我有以下 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 树合并,或者可以使用 boost 这样的库?谢谢。
As an example, I've the following b-tree model with each node containing tag/value pairs. The tree indicates precedence (or priority), with the root being highest, down to the leaves as lowest (but this is application specific). I want to merge a new tree section into the parent, with the new section containing potentially common tag/value pairs all the way down to the node just above a leaf node (a completely duplicate new tree section would just not be merged). E.g.
Existing tree (tag,value) pairs indicated:
A,0
,----------,-------------,
B,1 B,2 B,3
,-------------,
C,1 C,2
New tree to merge:
A,0
|
B,3
,-----------,
C,1 C,2
Final merged tree:
A,0
,----------,-----------------,
B,1 B,2 B,3
,-------------, ,-----------,
C,1 C,2 C,1 C,2
Question: is there an elegant C++ solution to this b-tree merge using std containers, or possible with a library like boost? Thanks.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
您可以使用 Kasper Peeter 的 tree.hh 库,它是 GPLv2 和 GPLv3。
它是类似于 N 叉树的 STL 实现。
文档说有一个名为 merge 的可变算法,可以合并两棵树。它还解释了它是如何实现的。
You can use Kasper Peeter's tree.hh library, it's GPLv2 and GPLv3.
It's an STL like implementation for an n-ary tree.
The documentation says that there's a mutable algorithm, named merge, that can merge two trees. It also explains how it's achieved.