請實現兩個函式,分別用來序列化和反序列化二叉樹

2022-05-23 19:36:10 字數 827 閱讀 1310

二叉樹的序列化是指:把一棵二叉樹按照某種遍歷方式的結果以某種格式儲存為字串,從而使得記憶體中建立起來的二叉樹可以持久儲存。序列化可以基於先序、中序、後序、層序的二叉樹遍歷方式來進行修改,序列化的結果是乙個字串,序列化時通過 某種符號表示空節點(#),以 ! 表示乙個結點值的結束(value!)。

二叉樹的反序列化是指:根據某種遍歷順序得到的序列化字串結果str,重構二叉樹。

//這道題的核心思想就是為了,讓我們將二叉樹轉化成為我們自己可以看懂的字串

//然後將這個字串又可以轉化為二叉樹。這樣就行了。

class solution

}treenode* dfs2(int* &p)

treenode* res=new treenode(*p);

p++;

res->left=dfs2(p);

res->right=dfs2(p);

return res;

}char* serialize(treenode *root) {

buf.clear();

dfs1(root);

int bufsize=buf.size();

int *res=new int[bufsize];

for(int i=0;i二叉樹的序列化是指:把一棵二叉樹按照某種遍歷方式的結果以某種格式儲存為字串,從而使得記憶體中建立起來的二叉樹可以持久儲存。序列化可以基於先序、中序、後序、層序的二叉樹遍歷方式來進行修改,序列化的結果是乙個字串,序列化時通過 某種符號表示空節點(#),以 ! 表示乙個結點值的結束(value!)。

二叉樹的反序列化是指:根據某種遍歷順序得到的序列化字串結果str,重構二叉樹。

請實現兩個函式,分別用來序列化和反序列化二叉樹

對於序列化 使用前序遍歷,遞迴的將二叉樹的值轉化為字元,並且在每次二叉樹的結點不為空時,在轉化val所得的字元之後新增乙個 作為分割。對於空節點則以 代替。對於反序列化 按照前序順序,遞迴的使用字串中的字元建立乙個二叉樹 coding utf 8 class treenode def init se...

請實現兩個函式,分別用來序列化和反序列化二叉樹

請實現兩個函式,分別用來序列化和反序列化二叉樹 二叉樹的序列化是指 把一棵二叉樹按照某種遍歷方式的結果以某種格式儲存為字串,從而使得記憶體中建立起來的二叉樹可以持久儲存。序列化可以基於先序 中序 後序 層序的二叉樹遍歷方式來進行修改,序列化的結果是乙個字串,序列化時通過 某種符號表示空節點 以 表示...

序列化和反序列化二叉樹

請實現兩個函式,分別用來序列化和反序列化二叉樹。基本思想很簡單,序列化就是用某一種遍歷方法將二叉樹元素儲存在字串陣列中,當然要乙個個元素分離,分得清誰是誰。反序列化就是把儲存在字串陣列中的元素進行重構,使之成為二叉樹。我們不妨選擇前序遍歷的思想進行搜尋與重構。本題的關鍵是如何對元素進行儲存,可以放在...