扩展树结构的序列化

Serialization of extended Tree Structure

本文关键字:序列化 结构 扩展      更新时间:2023-10-16

>我有一个树状结构,它由下式构造

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

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

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

有什么提示吗?

你的树是什么?您的树是指向其中一个此类节点(TreeNodepRoot的指针。由于您有 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/也可能对您有用