我的C ++程序通过用户输入创建了不平衡的BST,并将其保存到磁盘中。为此,它首先通过进行遍历遍历并为每个节点分配唯一的编号来索引每个节点。接下来,它将BST输出到文件。它通过执行预遍历,然后为每个节点打印以归档数据值,左子节点的索引号和右子节点的索引号来执行此操作。

因此,将BST保存到磁盘后,内存中的BST将被破坏。我想读入文件并重新创建BST,以便它与以前完全一样。

最佳答案

将所有节点以及左右子索引(例如哈希表)读入内存。然后从根(文件的第一个节点)开始,并从哈希表中按索引找到左右子节点。以DFS或BFS方式对子节点重复相同的过程。两者都应该起作用。

您可以对此进行优化,以免在构造树之前将整个数据加载到内存中。您可以读取节点并以DFS方式构造树。因此,添加左孩子是直截了当的。在添加合适的孩子时,您必须检查索引号。如果不匹配,请尝试在DFS排序中在高于当前节点的节点中添加该子节点。

关于c++ - 如何从文件重建BST,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2242156/

10-13 07:02