c++ - 如何在 C++ 中将二叉树序列化为文件
问题描述
我想将二叉树序列化为 .txt 文件。我正在使用 bfs 遍历树,以便能够乘以 2(或 2+1 对于右子节点)以跳转到节点的左子节点,并且我想按该顺序写入文件。我打算使用 fseek (C++) 将光标指向文件中孩子开始的位置。理想情况下,我希望在每个父母中都有孩子开始位置的位置。我想将我的树写入一个文件,这样我就可以在文件中搜索给定的节点。我不想反序列化它。
外汇。下面是我想要的描述。node1 具有左右子节点的起始位置(请注意,它们只是用于说明目的的随机数),因此我应该能够使用 fseek 设置指针并快速读取子节点的数据。但是,我一直无法找出如何?有这样做的聪明方法吗?即在文件中找到孩子的位置并将它们添加到每个父母。
二叉树:
1
/ \
2 3
文件:
//a txt file where each node stores the positions of its children in the file.
//Format is: (node number: some data, left child position, right child position)
node1: data, 13, 26;
node2: data, 50, 80;
node3: data, 100, 150;
...
解决方案
推荐阅读
- java - 使用 log4j2 访问 org.slf4j.MDC?
- c++ - 如何在 OpenCV 中右移(C++ 中的“>>”运算符)?(似乎只有 &、|、^ 等,但没有 >> 运算符)
- ruby-on-rails - 如何在现有存储库中使用 Neo4j 配置 Rails?
- sql - SQL 错误 [904] [42000]: ORA-00904: "BC"."SPAREBOX": 标识符无效
- svelte - Svelte:如何在使用动态组件切换到子组件后调用子组件中的函数?
- visual-studio - 当我想从存储库中提取时,我的 github 中有错误
- error-handling - 返回结果<(), 框
> 生锈 - javascript - 将键值对插入由键值对组成的数组中
- mysql - 以多行更新形式更改输入单选值
- javascript - ReactJS:哪种方法最好存储通过 useRef 引用的 HTML 画布元素的参数?