Serialize and Deserialize Binary Tree

来源:互联网 发布:量子纠缠知乎 编辑:程序博客网 时间:2024/06/06 07:48

原理很简单,dfs前序遍历一遍就好了

这里记录一下使用stream而不是for循环来对字符串进行分割,使得代码非常简单,以前见过一次这种方式,这里加强一下记忆

class Codec {public:    // Encodes a tree to a single string.    string serialize(TreeNode* root) {        if (root == NULL) return "#";        return to_string(root->val) + "," + serialize(root->left) + "," + serialize(root->right);    }    TreeNode* deserialize(string data) {        if (data == "#") return NULL;        stringstream s(data);        return makeDeserialize(s);    }        TreeNode* makeDeserialize(stringstream& s) {        string str;        getline(s, str, ',');        if (str == "#") {            return NULL;        } else {            TreeNode* root = new TreeNode(stoi(str));            root->left = makeDeserialize(s);            root->right = makeDeserialize(s);            return root;        }    }};


0 0
原创粉丝点击