//前序遍历代码classCodec{public:// Encodes a tree to a single string.
string serialize(TreeNode* root){
string sPre ="";traverse(root, sPre);return sPre;}// Decodes your encoded data to tree.
TreeNode*deserialize(string data){
vector<string> vec;int i =0;int j =0;int len = data.length();while(i < len){if(data[j]==','){
vec.push_back(data.substr(i, j - i));
i = j +1;
j ++;}while(j < len && data[j]!=','){
j++;}}
TreeNode* root =deserialize(vec);return root;}intto_int(const string& s){int length = s.length();int number =0;bool fu =true;for(int i =0; i < length; i++){if(i ==0&& s[0]=='-'){
fu =false;continue;}
number = number *10+ s[i]-48;}if(!fu)return0- number;return number;}
TreeNode*deserialize(vector<string>& vec){
string s;if(vec.size()!=0){
s = vec[0];
vec.erase(vec.begin());}if(s =="#"|| s =="")returnnullptr;
TreeNode* root =newTreeNode(to_int(s));
root -> left =deserialize(vec);
root -> right =deserialize(vec);return root;}voidtraverse(TreeNode* root, string& sPre){if(root ==nullptr){
sPre = sPre +"#"+",";return;}
sPre +=to_string(root -> val)+",";traverse(root -> left, sPre);traverse(root -> right, sPre);}};//后序遍历代码如下:classCodec{public:// Encodes a tree to a single string.
string serialize(TreeNode* root){
string post ="";posttraverse(root, post);return post;}voidposttraverse(TreeNode* root, string& post){if(root ==nullptr){
post = post +"#"+",";return;}posttraverse(root -> left, post);posttraverse(root -> right, post);
post = post +to_string(root -> val)+",";}
TreeNode*deserialize(string data){
list<string> lst;int i =0;int j =0;int len = data.length();while(i < len){if(data[j]==','){
lst.push_back(data.substr(i, j - i));
i = j +1;
j ++;}while(j < len && data[j]!=','){
j++;}}
TreeNode* root =deserialize(lst);return root;}
TreeNode*deserialize(list<string>& lst){int size = lst.size();if(size ==0)returnnullptr;if(lst.back()=="#"){
lst.pop_back();returnnullptr;}
TreeNode* root =newTreeNode(to_int(lst.back()));
lst.pop_back();
root -> right =deserialize(lst);
root -> left =deserialize(lst);return root;}intto_int(const string& s){int length = s.length();int number =0;bool fu =true;for(int i =0; i < length; i++){if(i ==0&& s[0]=='-'){
fu =false;continue;}
number = number *10+ s[i]-48;}if(!fu)return0- number;return number;}