0

我有一个树状结构,由

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

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

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

有什么提示吗?

4

1 回答 1

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/

于 2013-09-20T09:19:57.630 回答