题解 | #序列化二叉树#

序列化二叉树

https://www.nowcoder.com/practice/cf7e25aa97c04cc1a68c8f040e71fb84

/*
struct TreeNode {
    int val;
    struct TreeNode *left;
    struct TreeNode *right;
    TreeNode(int x) :
            val(x), left(NULL), right(NULL) {
    }
};
*/
#include <cstring>
#include <string>
class Solution {
public:
    void SerializeFun(TreeNode* root, string& str){
        if (root==NULL) {
            str += "#";
            return;
        }
        str += to_string(root->val);
        str += "!";
        SerializeFun(root->left, str);
        SerializeFun(root->right, str);
    }
    
    char* Serialize(TreeNode *root) {    
        string str;
        SerializeFun(root, str);
        char* charans = new char[str.length() + 1];
        strcpy(charans, str.c_str());
        charans[str.length()] = '*';
        return charans;
    }

    TreeNode* DeserializeFun(char** str){
        if (**str == '#') {
            (*str)++;
            return nullptr;
        }
        int val = 0;
        while (**str != '!' && **str != '*') {
            val = val * 10 + **str - '0';
            (*str)++;
        }
        TreeNode* root = new TreeNode(val);
        if (**str == '*') {
            return root;
        }
        else {
            (*str)++;
        }
        root->left = DeserializeFun(str);
        root->right = DeserializeFun(str);
        return root;
    }

    TreeNode* Deserialize(char *str) {
        if (str == "#") {
            return nullptr;
        }
        return DeserializeFun(&str);
    }
};

回家再手敲一遍

全部评论

相关推荐

不愿透露姓名的神秘牛友
07-09 13:05
TMD找工作本来就烦,这东西什么素质啊😡
Beeee0927:hr是超雄了,不过也是有道理的
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
07-11 11:16
点赞 评论 收藏
分享
Rena1ssanc...:对的,要是面评没太烂,勤更新简历等捞就行了,腾讯可以无限复活
点赞 评论 收藏
分享
Lorn的意义:你这标个前端是想找全栈吗?而且项目确实没什么含金量,技术栈太少了,边沉淀边找吧 现在学院本想就业好一点四年至少得高三模式两年加油吧
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
07-09 12:30
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务