2012-05-23 42 views
1
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。在文件中存儲二叉樹

+0

您是否有特定的語言,或者您在尋找通用解決方案? – jhonkola

回答

1

答案依然存在於你的問題中。將字符存儲在引號內,並在讀取這些字符的同時,每當遇到引號時,繼續閱讀直到找到下一個引號,然後放下引號。如果在樹中有引號,則可以用其他特殊字符將它們轉義。

0

如果你想相當任意的數據結構存儲爲文本文件,可以考慮使用YAML。有可用於大多數語言編碼器/解碼器庫。

如果這是作業,或者你想知道如何自己實現它,請使用escape characters的共同想法。如果您不熟悉這個概念,請參閱該鏈接中的示例。

0

您必須知道您可以使用哪些分隔符。例如,假設空格爲分隔符,即節點數據不包含空格,則可以使用此表示法在文件中存儲:(A(B(D)(E))(C)) 用其他合適的分隔器替換空白區域。

0

如果您在節點 - ()中有括號,則必須使用escape them(例如,帶有反斜槓\。當然,當你解析數據時,你總是必須檢查反斜槓。這會降低你的解析器的速度,所以如果速度很重要,你應該選擇一個不是有效的節點字符的分隔符。