c++

序列化二叉树

http://www.nowcoder.com/questionTerminal/cf7e25aa97c04cc1a68c8f040e71fb84

/*
struct TreeNode {
    int val;
    struct TreeNode *left;
    struct TreeNode *right;
    TreeNode(int x) :
            val(x), left(NULL), right(NULL) {
    }
};
*/
class Solution {
public:

    string SerializeCore(TreeNode *root) {
        if (root == NULL)  return "#!";
        return to_string(root->val)+"!"+ SerializeCore(root->left)+SerializeCore(root->right);        
    }

    char* Serialize(TreeNode *root) {    
        if (root == NULL) return NULL;
        string str = SerializeCore(root);
        return strdup(str.c_str());
    }

    TreeNode* DeserializeCore(stringstream& ss) {
        string str;
        getline(ss, str, '!');
        if (str == "#") return NULL;
        else {
            TreeNode* node = new TreeNode(stoi(str));
            node->left = DeserializeCore(ss);
            node->right = DeserializeCore(ss);
            return node;
        }
    }

    TreeNode* Deserialize(char *str) {
        if (str == NULL) return NULL;
        stringstream ss(str);
        return DeserializeCore(ss);
    }
};
全部评论

相关推荐

野猪不是猪🐗:现在的环境就是这样,供远大于求。 以前卡学历,现在最高学历不够卡了,还要卡第一学历。 还是不够筛,于是还要求得有实习、不能有gap等等... 可能这个岗位总共就一个hc,筛到最后还是有十几个人满足这些要求。他们都非常优秀,各方面都很棒。 那没办法了,看那个顺眼选哪个呗。 很残酷,也很现实
点赞 评论 收藏
分享
吴offer选手:我卡在笔试才是最好笑的,甚至没给我发过笔试链接
投递哔哩哔哩等公司6个岗位
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务