我正在編寫一個serialize
方法,該方法將Tree轉換爲字符串進行存儲。我正在尋找一個分隔符用於序列化,並不確定要使用什麼。Ruby中的序列化分隔符
我不能使用,
,因爲它可能作爲節點中的數據值存在。例如
A
/\
B ,
將序列化到A, B, ,,
,打破我的deserialization
方法。我可以使用不可打印的ASCII字符嗎?還是我應該猜測哪些字符不可能作爲輸入顯示並用作我的分隔符?
這裏就是我的serialize
方法的樣子,如果你很好奇:
def serialize(root)
if root.nil?
""
else
root.val + DELIMITER +
serialize(root.left) + DELIMITER +
serialize(root.right)
end
end
謝謝!你對使用非printables有什麼想法? – FloatingRock
即使您使用轉義符,您的想法也很好,即使使用較少使用的字符,也仍然需要較少的轉義。想象一下,如果'ee'是eescapee的特徵,它會是什麼樣子。然而,我認爲使用不可打印的字符太過分了:除非你特別想設計一個二進制格式(比如Ruby's Marshal,Python的Pickle或者Java的序列化),否則「可調試性更低」(即更少的可調試性)。通過簡單地用'less'檢查輸出來進行調試)是一個很好的屬性,並且你不應該輕易放棄。 –