社区
C++ 语言
帖子详情
多叉树的序列化和反序列化--急求
yang228
2011-09-16 09:29:56
我需要操作一个比较大的多叉树结构,有的结点可能有几千的孩子,这个树结构是我读文件生成的,文件大概2M多,生成树结构太慢了,我想直接序列化之后存储起来,以后直接读序列化的文件,这样应该会快很多吧。 期待高手给点意见啊。。。
...全文
597
10
打赏
收藏
多叉树的序列化和反序列化--急求
我需要操作一个比较大的多叉树结构,有的结点可能有几千的孩子,这个树结构是我读文件生成的,文件大概2M多,生成树结构太慢了,我想直接序列化之后存储起来,以后直接读序列化的文件,这样应该会快很多吧。 期待高手给点意见啊。。。
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
10 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
yang228
2011-09-16
打赏
举报
回复
python 搞这个很爽吗? 额,还没用过。。
冻结
2011-09-16
打赏
举报
回复
如果用python,那就爽了。
冻结
2011-09-16
打赏
举报
回复
以前弄过,
序列化的时候,深度遍历。
反序列化的时候,记录一个节点总数,用父子关系,再新建这个结构。
我用的是MFC的序列化。
yang228
2011-09-16
打赏
举报
回复
这个建树的时候,每次都要按层遍历,比较麻烦,解析的时候肯定慢了, 我想着序列化好了的话,下次生成的时候只需要读文件就可以了,不需要解析,这样就能快不少了。
SonicLing
2011-09-16
打赏
举报
回复
先想想如何提高解析速度吧。序列化和反序列化本质还是解析、反解析,只不过采用一种好的顺序可能会快一点,但是也不一定能快多少,这要看你原先的解析难度有多难,速度最快能有多快。
yang228
2011-09-16
打赏
举报
回复
原来的文件吗? 类似于这样的, abc def aag
我做的树就是root
a d
b a e
c g c
大概这样
qq120848369
2011-09-16
打赏
举报
回复
B树么,不解释。
ryfdizuo
2011-09-16
打赏
举报
回复
文件中是怎么存储的。
yang228
2011-09-16
打赏
举报
回复
额,大家给点意见吧。。在线等。
SonicLing
2011-09-16
打赏
举报
回复
template<typename T>
struct node_storage
{
T data;
unsigned parent;
};
template<typename T>
struct node : public node_storage<T>
{
std::list<unsigned> children;
}
typedef std::vector<node<my_type> > tree_t;
tree_t my_tree;
node_storage<my_type> *serial = new node_storage<my_type>(my_tree.size());
for ( ... ) serial[i] = my_tree[i];
fwrite(serial, sizeof(node_storage<my_type>), my_tree.size(), fp);
//========================================
//计算count
fread(serial, sizeof(node_storage<my_type>), count, fp);
for (...) my_tree.push_back(serial[i]);
// 重建children列表
for (...) my_tree[my_tree[i].parent].children.push_back(i);
protobuf-2.5.0 jar包及代码生成工具
Protocol Buffers(简称protobuf)是谷歌的一项技术,用于将结构化的数据
序列化
、
反
序列化
,经常用于网络传输。
数据结构 -- N叉树的
序列化
与
反
序列化
1. 二叉树的
序列化
与
反
序列化
//
序列化
public String serialize(TreeNode root) { if(root == null) return "#"; return root.val + "!" + serialize(root.left) + "!" + serialize(root.right); } //
反
序列化
...
序列化
和
反
序列化
的详解
1、
序列化
和
反
序列化
的定义: (1)Java
序列化
就是指把Java对象转换为字节序列的过程 Java
反
序列化
就是指把字节序列恢复为Java对象的过程。 (2)
序列化
最重要的作用:在传递和保存对象时.保证对象的完整性和可...
Java
序列化
与
反
序列化
Java
序列化
与
反
序列化
是什么?为什么需要
序列化
与
反
序列化
?如何实现Java
序列化
与
反
序列化
?本文围绕这些问题进行了探讨。 1.Java
序列化
与
反
序列化
Java
序列化
是指把Java对象转换为字节序列的过程;而Java反...
2022-01-25:
序列化
和
反
序列化
N 叉树。
序列化
是指将一个数据结构转化为位序列的过程,因此可以将其存储在文件中或内存缓冲区中,以便稍后在相同或不同的计算机环境中恢复结构。 设计一个
序列化
和反
2022-01-25:
序列化
和
反
序列化
N 叉树。
序列化
是指将一个数据结构转化为位序列的过程,因此可以将其存储在文件中或内存缓冲区中,以便稍后在相同或不同的计算机环境中恢复结构。 设计一个
序列化
和
反
序列化
N 叉树的...
C++ 语言
64,641
社区成员
250,579
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章