zoukankan      html  css  js  c++  java
  • 剑指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));
  • 相关阅读:
    众皓网络(T 面试)
    骑芯供应链(T 面试)
    骑芯供应链(W 笔试)
    面试问题_一拉到底
    Java后端学习路线_备战
    docker 容器
    技术展望
    索引 命令
    索引 概念原理
    面试技能更新
  • 原文地址:https://www.cnblogs.com/clown9804/p/12389958.html
Copyright © 2011-2022 走看看