扩展树结构的序列化

时间:2013-09-20 07:10:21

标签: c++ serialization tree

我有一个树状结构,由

构成
struct TreeNode
{
     std::vector<TreeNode*> p_PrevLevelNodes;
     std::vector<TreeNode*> p_NextLevelNodes;
}

并存储了一些根节点。与经典树相比,节点可能具有多个根节点。所有这些根节点都存在于“经典”树中,但也可以说是额外的链接。

回答我的问题:我必须通过MPI和tcp在不同实例之间传递这种结构。因此,我需要某种序列化,但不知道从哪里开始。

任何提示?

1 个答案:

答案 0 :(得分:0)

你的树是什么?您的树是其中一个节点(pRoot)的指针TreeNode。由于您有pRoot,因此您可以构建上层节点列表(在通常情况下它为pRoot为空)和较低节点列表。因此,您可以构建受访节点列表+保存有关它们的其他信息。对于列表中的每个节点,您可以重复所有这些操作。因此,您将拥有包含其他信息的大型节点列表 - 很容易序列化此列表而不是您的树。

(实际上没有必要建立序列化的中间数据结构,但我建议记住这个结构以简化算法的实现)

这里实现了类似的东西:http://basicalgos.blogspot.ru/2012/04/44-serialize-and-de-serialize-tree.html(有更简单的树,但我认为你可以为你的树重复这个逻辑)。

您也可以阅读http://eli.thegreenplace.net/2011/09/29/an-interesting-tree-serialization-algorithm-from-dwarf/