• 剑指OFFER----面试题37. 序列化二叉树


    链接:https://leetcode-cn.com/problems/xu-lie-hua-er-cha-shu-lcof/

    代码:

    /**
     * Definition for a binary tree node.
     * struct TreeNode {
     *     int val;
     *     TreeNode *left;
     *     TreeNode *right;
     *     TreeNode(int x) : val(x), left(NULL), right(NULL) {}
     * };
     */
    class Codec {
    public:
    
        string serialize(TreeNode* root) {
            string res;
            dfs_s(root, res);
            return res;
        }
    
        void dfs_s(TreeNode *root, string &res)
        {
            if (!root) {
                res += "null ";
                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 (u == data.size()) return NULL;
            int k = u;
            while (data[k] != ' ') k ++ ;
            if (data[u] == 'n') {
                u = k + 1;
                return NULL;
            }
            int val = 0, sign = 1;
            if (u < k && data[u] == '-') sign = -1, u ++ ;
            for (int i = u; i < k; i ++ ) val = val * 10 + data[i] - '0';
            val *= sign;
            u = k + 1;
            auto root = new TreeNode(val);
            root->left = dfs_d(data, u);
            root->right = dfs_d(data, u);
            return root;
        }
    
    
    };
    
    // Your Codec object will be instantiated and called as such:
    // Codec codec;
    // codec.deserialize(codec.serialize(root));
  • 相关阅读:
    [FJOI 2016] 神秘数
    [SHOI 2017] 寿司餐厅
    [HAOI 2012] Road
    [HAOI 2012] 容易题
    [TJOI 2018] XOR
    [NOI 2011] 阿狸的打字机
    [ZJOI 2010] 排列计数
    [TJOI2016 & HEOI2016] 字符串
    [HNOI 2011] 数学作业
    【NTT】loj#6261. 一个人的高三楼
  • 原文地址:https://www.cnblogs.com/clown9804/p/12389958.html
Copyright © 2020-2023  润新知