【问题标题】:Serialization of extended Tree Structure扩展树结构的序列化
【发布时间】:2013-09-20 07:10:20
【问题描述】:

我有一个树状结构,由

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

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

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

有什么提示吗?

【问题讨论】:

  • “我有一个树状结构,它是由”构建的......不,你没有。这甚至不是合法的 C++。
  • 嗯,我很确定我有一个树状结构。但是,我就这样使用它,只要只有一个 PrevLevel 指针。每个节点都有多个子节点。很抱歉将 * 放在错误的位置,但我正在寻找一个大致的想法,而不是确切的代码。

标签: c++ serialization tree


【解决方案1】:

你的树是什么?您的树是指向此类节点之一 (TreeNode) 的指针 pRoot。因为你有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/也可能对您有用

【讨论】:

    猜你喜欢
    • 2018-03-03
    • 2010-10-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多