請實現兩個函式,分別用來序列化和反序列化二叉樹
思路:用遞迴實現:序列化二叉樹,按照中序遍歷二叉樹的順序,先左節點,後右節點,當到『#』時候,說明左節點或者右節點為null,
同樣反序列二叉樹也乙個道理,需要注意的是在序列和反序列二叉樹的時候,注意字串與整數的轉換,一般字串轉換為整數,用迭代
迴圈實現,整數轉換為字串可以用
sprintf
實現或者itoa實現;
**:
char* serialize(treenode *root)
void serialize1(treenode* root,string s)
char a[10];
sprintf(a,"%d",root->val);
s += a;
s += ",";
serialize1(root->left,s);
serialize1(root->right,s);
}treenode* deserialize(char *str)
treenode* deserialize1(char* str,int &num)
while(str[num] != ',' && str[num] != '\0')
if(str[num] == '\0')
;else
num++;
treenode *root=new treenode(val);
root->left=deserialize1(str,num);
root->right=deserialize1(str,num);
return root;
}
序列化二叉樹和反序列化二叉樹
題目描述 請實現兩個函式,分別用來序列化和反序列化二叉樹 二叉樹的序列化是指 把一棵二叉樹按照某種遍歷方式的結果以某種格式儲存為字串,從而使得記憶體中建立起來的二叉樹可以持久儲存。序列化可以基於先序 中序 後序 層序的二叉樹遍歷方式來進行修改,序列化的結果是乙個字串,序列化時通過 某種符號表示空節點...
序列化二叉樹
問題 實現兩個函式,序列化乙個二叉樹。如果之前做過乙個題目 用一顆二叉樹的中序和前序還原二叉樹的話,最直觀的解法是用把二叉樹系列化成乙個中序序列和乙個前序序列,但是這個方法的缺陷是每個節點上的值不能相同,而且需要將整個序列都讀入之後才能序列化,如果序列到乙個流中,在從流中讀出來還原二叉樹效率將會比較...
序列化二叉樹
請實現兩個函式,分別用來序列化和反序列化二叉樹 序列化思路 如果二叉樹的序列化是從根節點開始的話,那麼相應的反序列化在根節點的數值對出來的時候就可以開始了,因此我們可以根據前序遍歷的的根節點數值在讀出來的時候就可以開始了,因此我們可以根據前序遍歷的順序來序列化二叉樹,因為前序遍歷是從根節點開始的。當...