扩展树结构的序列化
Serialization of extended Tree Structure
>我有一个树状结构,它由下式构造
struct TreeNode
{
std::vector<TreeNode*> p_PrevLevelNodes;
std::vector<TreeNode*> p_NextLevelNodes;
}
并且存储了一些根节点。与经典树相比,一个节点可能有多个根节点。所有这些根节点都存在于"经典"树中,但可以说还有其他链接。
来回答我的问题:我必须通过 MPI 和 tcp 在不同实例之间传达此结构。因此,我需要某种序列化,但真的不知道从哪里开始。
有什么提示吗?
你的树是什么?您的树是指向其中一个此类节点(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/也可能对您有用
相关文章:
- 如何在C++中序列化结构数据
- 如何使用boost::具有嵌套结构和最小代码更改的序列化
- 如何在 boost::asio 中将打包的结构作为消息传递?(无序列化)
- 使用指向 struc 的指针序列化结构
- C++ 提升 - 包含类层次结构对象的类的序列化
- 如何从平面缓冲区中反序列化联合结构的 void* 值的大小
- 将载体和cv :: mat to Disk的存储结构 - C 中的数据序列化
- 序列化没有"save"方法的大型结构
- 在 C# 中序列化这些值以在C++中作为已知结构正确读取时遇到问题
- 无序列图会创建一个零初始化结构吗?
- 如何在结构中序列化unique_ptr<char[]>
- 我的数据结构的最佳序列化方法
- 分段错误:C++中的结构序列化和 MPI 数据传输
- 跳过层次结构中的中间类,并使用boost ::序列化
- Boost::序列化存储结构时的堆栈溢出错误
- C 使用谷物序列化结构的静态阵列
- 具有3字节块的序列化C 结构
- 序列化结构以归档,并用字符串再次对其进行启用
- 序列化结构
- 序列化结构的STL映射