順便說一下,今天做題的時候也用到了stringstream這個類,是二叉樹的序列化和反序列化。
設計乙個演算法,並編寫**來序列化和反序列化二叉樹。將樹寫入乙個檔案被稱為「序列化」,讀取檔案後重建同樣的二叉樹被稱為「反序列化」。如何反序列化或序列化二叉樹是沒有限制的,你只需要確保可以將二叉樹序列化為乙個字串,並且可以將字串反序列化為原來的樹結構。
通過先序遍歷建立二叉樹的序列化,其中空子樹用'#'來表示。反序列化的時候呢,遇到'#'就停止遞迴構造。另外序列化的時候是將整數通過stringstream轉換成字串,反序列化是將字串通過stringstream轉換成整數。
/** * definition of treenode:
* class treenode
* } */
class
solution
void pre_order(treenode *root, string &s)
pre_order(root->left, s);
pre_order(root->right, s);
} else}}
string serialize(treenode *root)
stringstream ss;
void buildt(treenode * &t)
/*** this method will be invoked second, the argument data is what exactly
* you serialized at method "serialize", that means the data is not given by
* system, it's given by your own serialize method. so the format of data is
* designed by yourself, and deserialize it here as you serialize it in
* "serialize" method.
*/treenode *deserialize(string
data)
};
二叉樹 序列化與反序列化
序列化 serialization 在電腦科學的資料處理中,是指將資料結構或物件狀態轉換成可取用格式 例如存成檔案,存於緩衝,或經由網路中傳送 以留待後續在相同或另一台計算機環境中,能恢復原先狀態的過程。從一系列位元組提取資料結構的反向操作,是反序列化 也稱為解編組 deserialization ...
二叉樹序列化與反序列化
層序遍歷 實現二叉樹的序列化與反序列化。序列化二叉樹的方式有很多,最經典的就是將一顆二叉樹轉化為字串,這樣方便儲存到檔案。反序列化時只需解析這個字串,提取出每個節點的內容資訊,將二叉樹還原。二叉樹序列化有許多應用,比如 oj 平台在判斷你提交的二叉樹是否正確時,往往是將你的二叉樹序列化成字串,然後與...
序列化 反序列化二叉樹
設計乙個演算法能夠實現序列化和反序列化一棵二叉樹 注意,不是二叉搜尋樹bst 這裡的序列化指的是將一棵二叉樹儲存到檔案中,反序列化就是從檔案中讀取二叉樹結點值重構原來的二叉樹。前一篇文章儲存二叉搜尋樹到檔案中 解決了儲存一棵二叉搜尋樹到檔案中的問題,但是由於本題目的意思是要把一棵二叉樹儲存到檔案中並...