劍指offer 序列化二叉樹

2022-11-24 15:01:37 字數 1090 閱讀 1280

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

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

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

1/*2

struct treenode 9};

10*/

11class

solution

18string tmp = to_string(root->val);

19 s +=tmp;

20 s += '!'

;21 serialize(root->left, s);

22 serialize(root->right, s);

23//

return s;24}

25 treenode* deserialize(char **str)

30int num = 0;31

while (**str != '

\0' && **str != '!'

) 35 treenode* root = new

treenode(num);

36if (**str == '\0'

) else

41 root->left =deserialize(str);

42 root->right =deserialize(str);

43return

root;44}

45public:46

char* serialize(treenode *root)

57 c[i] = '\0'

;58return

c;59

}60 treenode* deserialize(char *str)

6566 };

劍指offer 31序列化二叉樹

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

劍指Offer 37 序列化二叉樹

請實現兩個函式,分別用來序列化和反序列化二叉樹。你可以將以下二叉樹 1 2 3 4 5 序列化為 1,2,3,null,null,4,5 class codec res 空格為分隔符 return res decodes your encoded data to tree.treenode dese...

劍指 Offer 37 序列化二叉樹

思路 層次遍歷 序列化 層次遍歷二叉樹,注意輸出符合題目要求的格式 反序列化 初始化時除去序列化陣列的左右中括號,除去逗號,將其轉換成一個 string 陣列 這樣二叉樹中每個節點的索引即為陣列的下標 按序列化層次遍歷的思路,一層一層構建原二叉樹。序列化與反序列化的時間複雜度均為o n 空間複雜度均...