美文网首页
LeetCode Serialize and Deseriali

LeetCode Serialize and Deseriali

作者: codingcyx | 来源:发表于2018-04-17 21:03 被阅读0次
class Codec {
public:

    // Encodes a tree to a single string.
    string serialize(TreeNode* root) {
        ostringstream out;
        serialize(root, out);
        return out.str();
    }

    // Decodes your encoded data to tree.
    TreeNode* deserialize(string data) {
        istringstream in(data);
        return deserialize(in);
    }
private:
    
    void serialize(TreeNode* root, ostringstream& out) {
        if(root){
            out << root -> val << ' ';
            serialize(root -> left, out);
            serialize(root -> right, out);
        }
        else out << "# ";
    }
    
    TreeNode* deserialize(istringstream& in) {
        string val;
        in >> val;
        if(val == "#") return NULL;
        TreeNode* root = new TreeNode(stoi(val));
        root -> left = deserialize(in);
        root -> right = deserialize(in);
        return root;
    }
};

使用了sstream,比较方便根据空格分割字符串。

相关文章

网友评论

      本文标题:LeetCode Serialize and Deseriali

      本文链接:https://www.haomeiwen.com/subject/sxapkftx.html