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。在文件中存儲二叉樹
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。在文件中存儲二叉樹
答案依然存在於你的問題中。將字符存儲在引號內,並在讀取這些字符的同時,每當遇到引號時,繼續閱讀直到找到下一個引號,然後放下引號。如果在樹中有引號,則可以用其他特殊字符將它們轉義。
如果你想相當任意的數據結構存儲爲文本文件,可以考慮使用YAML。有可用於大多數語言編碼器/解碼器庫。
如果這是作業,或者你想知道如何自己實現它,請使用escape characters的共同想法。如果您不熟悉這個概念,請參閱該鏈接中的示例。
您必須知道您可以使用哪些分隔符。例如,假設空格爲分隔符,即節點數據不包含空格,則可以使用此表示法在文件中存儲:(A(B(D)(E))(C)) 用其他合適的分隔器替換空白區域。
如果您在節點 - (
或)
中有括號,則必須使用escape them(例如,帶有反斜槓\
。當然,當你解析數據時,你總是必須檢查反斜槓。這會降低你的解析器的速度,所以如果速度很重要,你應該選擇一個不是有效的節點字符的分隔符。
您是否有特定的語言,或者您在尋找通用解決方案? – jhonkola