当前位置: 首页 > news >正文

Leetcode 297. 二叉树的序列化与反序列化

文章目录

  • 题目
  • 代码(9.30 首刷自解)

题目

在这里插入图片描述

297. 二叉树的序列化与反序列化

代码(9.30 首刷自解)

class Codec {
public:
    string SEP = ",";
    string NULL_STR = "#";
    // Encodes a tree to a single string.
    string serialize(TreeNode* root) {
        if(!root)
            return NULL_STR + SEP;
        string res = to_string(root->val) + SEP;
        res += serialize(root->left);
        res += serialize(root->right);
        return res;
    }

    // Decodes your encoded data to tree.
    TreeNode* deserialize(string data) {
        deque<string> nodes;
        string tmp;
        for(char& c : data) {
            if(string(1,c) != SEP) {
                tmp += c;
            } else {
                nodes.emplace_back(tmp);
                tmp.clear();
            }
        }
        return help(nodes);
    }
    TreeNode* help(deque<string>& nodes) {
        auto front = nodes.front();
        nodes.pop_front();
        if(front == NULL_STR)
            return nullptr;
        auto root = new TreeNode(stoi(front));
        root->left = help(nodes);
        root->right = help(nodes);
        return root;
    }
};

相关文章:

  • 【LeetCode】滑动窗口妙解无重复字符的最长子串
  • 华为智能高校出口安全解决方案(2)
  • Ubuntu Qt 5.15.2 支持 aarch64
  • 【李沐深度学习笔记】损失函数
  • C++与数据结构面经(重中之重)
  • 83、SpringBoot --- 下载和安装 MSYS2、 Redis
  • 【ARMv8 SIMD和浮点指令编程】NEON 加载指令——如何将数据从内存搬到寄存器(LDxLDxR)?
  • 数据响应式原理
  • Java on Azure Tooling 8月更新|以应用程序为中心的视图支持及 Azure 应用服务部署状态改进
  • Redis与Mybatis
  • 批量删除wordpress文章修订版本/自动草稿残留数据(3种方法)及四种方法禁用WordPress文章历史修订/自动保存/自动草稿功能
  • [JAVAee]MyBatis
  • MySQL数据类型与表单创建
  • HTTP协议
  • Docker(三)、Dockerfile探究
  • 【C++】单例模式
  • 程序员的快乐如此简单
  • Hadoop分布式文件系统
  • celery分布式异步任务队列-4.4.7
  • SpringMVC+统一表现层返回值+异常处理器
  • 成为中国骑手孵化器,上海环球马术冠军赛是最好的历练舞台
  • 五一假期上海多个景点人流如织,警方多措并举确保秩序
  • 传奇落幕!波波维奇卸任马刺队主教练,转型全职球队总裁
  • 万达电影去年净利润亏损约9.4亿元,计划未来三年内新增25块IMAX银幕
  • 内蒙古公开宣判144件毁林毁草刑案,单起非法占用林地逾250亩
  • 力箭二号火箭成功进行满载起竖试验,计划今年首飞发射轻舟飞船