設計乙個演算法,並編寫**來序列化和反序列化二叉樹。將樹寫入乙個檔案被稱為「序列化」,讀取檔案後重建同樣的二叉樹被稱為「反序列化」。
如何反序列化或序列化二叉樹是沒有限制的,你只需要確保可以將二叉樹序列化為乙個字串,並且可以將字串反序列化為原來的樹結構。
如上圖所示是通過前序遍歷(深度優先搜尋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 對於序列化演算法,必須支援反序列化,即在約定的格式下,可以將滿足格式要求的字串重新構造為原始的結構形式。二叉樹的序列...