LeetCode Serialize and Deserialize Binary Tree

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,比较方便根据空格分割字符串。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容