我有一个树状结构,由
构成struct TreeNode
{
std::vector<TreeNode*> p_PrevLevelNodes;
std::vector<TreeNode*> p_NextLevelNodes;
}
并存储了一些根节点。与经典树相比,节点可能具有多个根节点。所有这些根节点都存在于“经典”树中,但也可以说是额外的链接。
回答我的问题:我必须通过MPI和tcp在不同实例之间传递这种结构。因此,我需要某种序列化,但不知道从哪里开始。
任何提示?
答案 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/