Leetcode 297. 二叉树的序列化与反序列化

文章目录

  • 题目
  • 代码(9.30 首刷自解)

题目

Leetcode 297. 二叉树的序列化与反序列化_第1张图片

297. 二叉树的序列化与反序列化

代码(9.30 首刷自解)

class Codec {
public:
    string SEP = ",";
    string NULL_STR = "#";
    // Encodes a tree to a single string.
    string serialize(TreeNode* root) {
        if(!root)
            return NULL_STR + SEP;
        string res = to_string(root->val) + SEP;
        res += serialize(root->left);
        res += serialize(root->right);
        return res;
    }

    // Decodes your encoded data to tree.
    TreeNode* deserialize(string data) {
        deque<string> nodes;
        string tmp;
        for(char& c : data) {
            if(string(1,c) != SEP) {
                tmp += c;
            } else {
                nodes.emplace_back(tmp);
                tmp.clear();
            }
        }
        return help(nodes);
    }
    TreeNode* help(deque<string>& nodes) {
        auto front = nodes.front();
        nodes.pop_front();
        if(front == NULL_STR)
            return nullptr;
        auto root = new TreeNode(stoi(front));
        root->left = help(nodes);
        root->right = help(nodes);
        return root;
    }
};

你可能感兴趣的:(Leetcode专栏,leetcode,redis,数据库)