zoukankan      html  css  js  c++  java
  • 剑指offer---序列化二叉树

    /*
    struct TreeNode {
        int val;
        struct TreeNode *left;
        struct TreeNode *right;
        TreeNode(int x) :
                val(x), left(NULL), right(NULL) {
        }
    };
    */
    
    
    class Solution {
    public:
        void serializeHelper(TreeNode *node, string& s)
        {
            if (node == NULL)
            {
                s.push_back('N');
                s.push_back(',');
                return;
            }
            s += to_string(node->val);
            s.push_back(',');
            serializeHelper(node->left, s);
            serializeHelper(node->right, s);
        }
        char* Serialize(TreeNode *root)
        {
            if (root == NULL)
                return NULL;
            string s = "";
            serializeHelper(root, s);
     
            char *ret = new char[s.length() + 1];
            strcpy(ret, s.c_str());
            return ret;
        }
         
        TreeNode *deserializeHelper(string &s)
        {
            if (s.empty()) 
                return NULL;
            if (s[0] == 'N')
            {
                s = s.substr(2);
                return NULL;
            }
            TreeNode *ret = new TreeNode(stoi(s));
            s = s.substr(s.find_first_of(',') + 1);
            ret->left = deserializeHelper(s);
            ret->right = deserializeHelper(s);
            return ret;
        }
         
        TreeNode* Deserialize(char *str) 
        {
            if (str == NULL)
                return NULL;
            string s(str);
            return deserializeHelper(s);
        }
    };

    我还是喜欢用vector做

  • 相关阅读:
    远程诊断DoIP
    基于linux内核包过滤技术的应用网关
    Boost内存池使用与测试
    C++ 编程规范
    大象——Thinking in UML
    C++ 创建类时常考虑的问题
    SLIP—串行线路上传输数据报的非标准协议
    神秘的程序员——编程的乐趣
    Bad Smell (代码的坏味道)
    模式与软件架构——软件架构的非功能特征
  • 原文地址:https://www.cnblogs.com/159269lzm/p/7271454.html
Copyright © 2011-2022 走看看