classCodec{private:voiddfsEncode(TreeNode* root, stringstream& ss){if(!root)// 遇到空节点{
ss <<"#"<<" ";return;}
ss << root->val <<" ";dfsEncode(root->left, ss);dfsEncode(root->right, ss);}
TreeNode*dfsDecode(stringstream& ss){
string r;// 作为接收一个节点
ss >> r;if(r.size()==0or r =="#")// 如果到字符串尾部,则什么都接收不到returnnullptr;
TreeNode* cur =newTreeNode(stoi(r));
cur->left =dfsDecode(ss);
cur->right =dfsDecode(ss);return cur;}public:// Encodes a tree to a single string.
string serialize(TreeNode* root){
stringstream ss;dfsEncode(root, ss);return ss.str();// 转为 string}// Decodes your encoded data to tree.
TreeNode*deserialize(string data){
stringstream ss(data);returndfsDecode(ss);}};