2
How to store a binary tree in a file & then read back.(Its not necessarily a BST)

               A
            /     \
          B        C
        /   \
       D    E

为此,我们可以使用 (A(B(D),(E)),(C)) 之类的东西将其存储在文件中。但是如果树节点的数据中有 '(' , ',' 字符呢?那么如何存储它以便我们可以检索它并构造原始 BT。

4

4 回答 4

1

答案仍然在你的问题中。您可以将字符存储在引号中,并且在阅读这些字符时,每当遇到引号时,请继续阅读直到找到下一个,然后删除引号。如果树中有引号,则可以使用其他特殊字符对其进行转义。

于 2012-05-23T08:14:29.210 回答
0

如果您想将相当任意的数据结构存储为文本文件,请考虑使用YAML。大多数语言都有可用的编码器/解码器库。

如果这是为了家庭作业,或者您想知道如何自己实现它,请使用转义字符的常见想法。如果您不熟悉该概念,请参阅该链接中的示例。

于 2012-05-23T08:18:43.670 回答
0

您必须知道可以使用哪些分隔符。例如,假设空格是分隔符,即节点数据不包含空格,则可以使用这种表示形式存储在文件中: ( A ( B ( D ) (E) ) ( C ) ) 可以替换任何其他合适的分隔符的空白。

于 2013-06-06T03:28:37.343 回答
0

In case you'd have brackets in node - ( or ), you'd have to escape them, e.g. with backslash \. Of course you'd always have to check for backslash when you are parsing the data. This would slow down your parser a bit, so if speed would matter a lot, you should choose a separator character that is not valid node character at all.

于 2015-11-28T17:16:31.603 回答