C 之二叉樹的序列化與反序列化

2021-09-17 19:53:53 字數 1194 閱讀 8452

設計乙個演算法,並編寫**來序列化和反序列化二叉樹。將樹寫入乙個檔案被稱為「序列化」,讀取檔案後重建同樣的二叉樹被稱為「反序列化」。

如何反序列化或序列化二叉樹是沒有限制的,你只需要確保可以將二叉樹序列化為乙個字串,並且可以將字串反序列化為原來的樹結構。

如上圖所示是通過前序遍歷(深度優先搜尋dfs)的方式進行二叉樹序列化的過程。

/**

* buildtree.cpp

** seralize & deseralize a binary tree with dfs

*/#include#includeusing namespace std;

struct treenode

};// classtreenode

// };

void serializecore(const treenode* proot, string& stream)

//stream << proot->val << ',';

stream += to_string(proot->val);

stream += ',';

serializecore(proot->left, stream);

serializecore(proot->right, stream);

}string serialize(treenode * root) ";

return str;

}treenode * deserializecore(string &data)

treenode *ret = new treenode(stoi(data));

data = data.substr(data.find_first_of(',') + 1);

ret->left = deserializecore(data);

ret->right = deserializecore(data);

return ret;

}treenode * deserialize(string &data)

int main()

"); treenode* root = deserialize(str);

return 0;

}

二叉樹 序列化與反序列化

序列化 serialization 在電腦科學的資料處理中,是指將資料結構或物件狀態轉換成可取用格式 例如存成檔案,存於緩衝,或經由網路中傳送 以留待後續在相同或另一台計算機環境中,能恢復原先狀態的過程。從一系列位元組提取資料結構的反向操作,是反序列化 也稱為解編組 deserialization ...

二叉樹序列化與反序列化

層序遍歷 實現二叉樹的序列化與反序列化。序列化二叉樹的方式有很多,最經典的就是將一顆二叉樹轉化為字串,這樣方便儲存到檔案。反序列化時只需解析這個字串,提取出每個節點的內容資訊,將二叉樹還原。二叉樹序列化有許多應用,比如 oj 平台在判斷你提交的二叉樹是否正確時,往往是將你的二叉樹序列化成字串,然後與...

C 二叉樹序列化與反序列化

目錄請實現兩個函式,分別用來序列化和反序列化二叉樹?序列化的意思是指將一些特定的資料結構,變成有格式資訊的字串。例如對乙個鍊錶,可以將1 2 3 4 null序列化為 1,2,3,4 對於序列化演算法,必須支援反序列化,即在約定的格式下,可以將滿足格式要求的字串重新構造為原始的結構形式。二叉樹的序列...