請實現兩個函式,分別用來序列化和反序列化二叉樹
思路一:
選用vectorarr作為輔助,最後轉為int* 和char* 的資料型別,由於『#』不方便表示,因此用乙個不會出現的數0x23333代替。方法上是使用遞迴的先序遍歷。
**一:
/*
struct treenode
};*/
class solution
}treenode* dfs2(int** str) else
}char* serialize(treenode *root)
treenode* deserialize(char *str)
};
思路二:
與思路一相同,但整個過程不使用輔助陣列,直接用指標實現。由於需要讓char*向後移動並改變,因此形參值要設定為char**
**二:
/*
struct treenode
};*/
class solution
res[i] = '\0';
return res;
}void serialize(treenode *root, string &str)
string r = to_string(root->val); //可以是單個字元『5』,也可能是字串『555』
str += r;
str += ','; //用逗號將數字隔開
serialize(root->left, str);
serialize(root->right, str);
}treenode* deserialize(char *str)
treenode* deserialize(char **str)
int num = 0;
while(**str != '\0' && **str != ',')
treenode *root = new treenode(num);
if(**str == '\0') else
}};
61 序列化二叉樹
題目描述 請實現兩個函式,分別用來序列化和反序列化二叉樹 思路 層次遍歷,非遞迴。其實是二叉樹的層次遍歷,對應於寬度優先搜尋,bfs。二叉樹的序列化,即給定二叉樹的根結點,按照某種遍歷方式將所有結點鏈結為乙個陣列或者字串。反序列化,即根據給定的序列重新恢復一棵二叉樹。例如一棵二叉樹 1 2 3 nu...
61 序列化二叉樹
請實現兩個函式,分別用來序列化和反序列化二叉樹 二叉樹的序列化是指 把一棵二叉樹按照某種遍歷方式的結果以某種格式儲存為字串,從而使得記憶體中建立起來的二叉樹可以持久儲存。序列化可以基於先序 中序 後序 層序的二叉樹遍歷方式來進行修改,序列化的結果是乙個字串,序列化時通過 某種符號表示空節點 以 表示...
61序列化二叉樹
請實現兩個函式,分別用來序列化和反序列化二叉樹 二叉樹的序列化是指 把一棵二叉樹按照某種遍歷方式的結果以某種格式儲存為字串,從而使得記憶體中建立起來的二叉樹可以持久儲存。序列化可以基於先序 中序 後序 層序的二叉樹遍歷方式來進行修改,序列化的結果是乙個字串,序列化時通過 某種符號表示空節點 以 表示...