题解 | #序列化二叉树#

序列化二叉树

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

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

class Solution {
public:
    string Ser(TreeNode *root){
        if(root == nullptr) return "@";
        // 前序遍历
        return to_string(root->val) + " " + Ser(root->left) + " " + Ser(root->right);
    }
    char* Serialize(TreeNode *root) {    
        string s = Ser(root);
        // 动态分配内存
        char *ret = new char[s.size() + 1];
        strcpy(ret, s.c_str());
        return ret;
                                                                                           
    }                                                                               
    TreeNode *de(istringstream &s){
        string tmp;
        s >> tmp;
        if(tmp == "@") return nullptr;
        TreeNode *node = new TreeNode(stoi(tmp));
        node->left = de(s);
        node->right = de(s);
        return node;
    }                                                                                    
    TreeNode* Deserialize(char *str) {
        string s1 = str;
        istringstream s(s1);
        return de(s);
    }
};
全部评论

相关推荐

迷茫的大四🐶:这才是秋招啊,我那除了广告还是广告的邮件通知,空白一片面试日程安排还配叫秋招吗
秋招白月光
点赞 评论 收藏
分享
浩浩没烦恼:一二面加起来才一个小时? 我一面就一个小时多了
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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