【问题标题】:Storing a hard copy of data in a binary search tree format以二叉搜索树格式存储数据的硬拷贝
【发布时间】:2018-11-24 20:40:03
【问题描述】:

我开始思考,如果我们将数据存储在文本文件中,它会以线性方式存储。虽然您可以按排序顺序存储内容,但您要查找的内容总是有可能在文件中最后出现。

在我的算法课程中,有很多关于在 Java/python/C 程序中组织数据的有效方法的讨论。您可以创建一个二叉搜索树对象,一切都很好。但是没有提到以有效方式存储所述数据的硬拷贝。

我的问题是:有没有办法以二叉搜索树格式存储一些数据的硬拷贝?这样当你去读取Java中的文件时,Java可以快速地向左或向右“跳跃”,并以高效的方式处理数据?

【问题讨论】:

  • 您可以将查找保存在主文件中。然后将数据存储到不同的桶文件中。
  • 你可以用一个数组来表示一个 BST。节点arr[i] 的子节点位于arr[2*i + 1]arr[2*i+2]。如果您的意思是存储您创建的对象的表示,许多语言都有一些序列化库(例如,python 中的pickle)。
  • 序列化似乎是我要找的。要研究那个。谢谢!
  • 您还可以查看数据库如何存储数据。
  • 在 Java 中查找 RandomAccessFile。或 fseek 在 C 中。

标签: java python c text-files binary-search-tree


【解决方案1】:

我的问题是:有没有办法存储一些数据的硬拷贝 以二叉搜索树格式?这样当你去阅读时 Java 中的文件,例如,Java 可以快速向左或向右“跳跃”,并且 以有效的方式处理数据?

在磁盘上存储二叉搜索树数据并没有特别的障碍——即使是以可以相当直接地处理的方式。您依赖固定大小的存储单元,这允许您使用某种形式的存储单元索引来代替指针。磁盘存储基本上是随机访问的,尽管在设备和 O/S 级别,I/O 是在设备和文件系统相关大小的块中执行的。

但是,搜索树还有其他变体,它们往往更有效地用于磁盘存储。例如,B 树就是为此目的而设计和使用的。一般来说,这些变化会产生更短、更宽的树,通常会调整为使节点的大小与一个磁盘块一样大。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多