首页 > 其他 > 详细

leetcode - 二叉树的序列化和反序列化

时间:2020-02-20 20:03:56      阅读:80      评论:0      收藏:0      [点我收藏+]
  • 序列化

    string serialize(TreeNode* root){
        string res;
        dfs_s(root, res);
        return res;
    }
    
    void dfs_s(TreeNode* root, string &res)
    {
        if(!root)
        {
            res += "#,";
            return;
        }
        res += to_string(root -> val) + ',';
        dfs_s(root -> left, res);
        dfs_s(root -> right, res);
    }
  • 反序列化

    TreeNode* deserialize(string data) {
        int u = 0;
        return dfs_d(data, u);
    }
    
    TreeNode* dfs_d(string data, int &u)
    {
        if(data[u] == '#')
        {
            u += 2;
            return nullptr;
        }
        int t = 0;
        bool is_minus = false;
        while(data[u] != ',')
        {
            if(data[u] == '-') is_minus = true;
            else t = t * 10 + data[u] - '0';
            u ++;
        }
        u ++;
        if(is_minus) t = -t;
        auto root = new TreeNode(t);
        root -> left = dfs_d(data, u);
        root -> right = dfs_d(data, u);
        return root;
    }

leetcode - 二叉树的序列化和反序列化

原文:https://www.cnblogs.com/xiaobaizzz/p/12336783.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!