LeetCode 297. 二叉树的序列化与反序列化(前序遍历层序遍历)

文章目录

    • 1. 题目
    • 2. 解题
      • 2.1 前序遍历
      • 2.2 层序遍历

1. 题目

序列化是将一个数据结构或者对象转换为连续的比特位的操作,进而可以将转换后的数据存储在一个文件或者内存中,同时也可以通过网络传输到另一个计算机环境,采取相反方式重构得到原数据。

二叉树,字符 ,互转

《剑指Offer》同题:面试题37. 序列化二叉树
449. 序列化和反序列化二叉搜索树

2. 解题

类似题解:
LeetCode 331. 验证二叉树的前序序列化
LeetCode 428. 序列化和反序列化 N 叉树(DFS)

2.1 前序遍历

class Codec {
public:// Encodes a tree to a single string.string serialize(TreeNode* root) {ostringstream out;serialize(root,out);return out.str();}// Decodes your encoded data to tree.TreeNode* deserialize(string data) {istringstream in(data);return deserialize(in);}
private:void serialize(TreeNode* root,ostringstream &out){if(root){out<< root->val << ' ';serialize(root->left,out);serialize(root->right,out);}elseout << "N ";  }TreeNode* deserialize(istringstream &in){string val;in >> val;if(val == "N"){return NULL;}TreeNode* root = new TreeNode(stoi(val));root->left = deserialize(in);root->right = deserialize(in);return root;}
};

2.2 层序遍历

class Codec {
public:// Encodes a tree to a single string.string serialize(TreeNode* root) {if(root == NULL) return "";queue<TreeNode*> q;TreeNode* node;q.push(root);ostringstream out;while(!q.empty()){node = q.front();q.pop();if(node == NULL)   out << "N ";else{out << node->val << " ";q.push(node->left);q.push(node->right);}}  return out.str();}// Decodes your encoded data to tree.TreeNode* deserialize(string data) {if(data.empty())    return NULL;istringstream in(data);string s;in >> s;TreeNode* root = new TreeNode(stoi(s));	    queue<TreeNode*> q;TreeNode* node;q.push(root);	    while(!q.empty()){node = q.front();q.pop();in >> s;if(s[0] == 'N')node->left = NULL;else{node->left = new TreeNode(stoi(s));q.push(node->left);}in >> s;if(s[0] == 'N')node->right = NULL;else{node->right = new TreeNode(stoi(s));q.push(node->right);}} return root;}
};

我的CSDN博客地址 https://michael.blog.csdn.net/

长按或扫码关注我的公众号(Michael阿明),一起加油、一起学习进步!
Michael阿明

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/478534.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

互联网企业安全之端口监控

外网端口监控系统是整个安全体系中非常重要的一环&#xff0c;它就像眼睛一样&#xff0c;时刻监控外网端口开放情况&#xff0c;并且在发现高危端口时能够及时提醒安全、运维人员做出相应处理。 对安全人员来说&#xff0c;互联网公司在快速发展壮大的过程中&#xff0c;外网边…

知乎热榜:程序员达到什么水平能拿到20k月薪

昨天在知乎上刷到一个热门问题:程序员需要达到什么水平才能顺利拿到 20k 无压力&#xff1f;其中一个最热门的回答是&#xff1a;“其实&#xff0c;无论你是前端还是后端、想进大厂还是拿高薪&#xff0c;算法都一定很重要。”为什么&#xff0c;算法会如此重要&#xff1f;不…

研究综述 | 知识图谱划分算法研究综述

作者 | 王鑫&#xff0c;天津大学智能与计算学部来源 | 计算机学报知识图谱划分是大规模知识图谱分布式处理的首要工作&#xff0c;是知识图谱的分布式存储、查询、推理和挖掘的基础支撑。从知识图谱和图划分的定义出发&#xff0c;系统性地介绍当前可用于知识图谱数据划分的各…

深度学习中不得不学的Graph Embedding方法

原文链接&#xff1a;https://zhuanlan.zhihu.com/p/64200072 深度学习中不得不学的Graph Embedding方法王喆​数据挖掘等 3 个话题下的优秀答主​关注他1,290 人赞同了该文章这里是「王喆的机器学习笔记」的第十四篇文章&#xff0c;之前已经有无数同学让我介绍一下Graph Embe…

写给新手炼丹师:2021版调参上分手册

文 | 山竹小果在日常调参的摸爬滚打中&#xff0c;参考了不少他人的调参经验&#xff0c;也积累了自己的一些有效调参方法&#xff0c;慢慢总结整理如下。希望对新晋算法工程师有所助力呀&#xff5e;寻找合适的学习率(learning rate)学习率是一个非常非常重要的超参数&#xf…

函数式编程在Redux/React中的应用

本文简述了软件复杂度问题及应对策略&#xff1a;抽象和组合&#xff1b;展示了抽象和组合在函数式编程中的应用&#xff1b;并展示了Redux/React在解决前端状态管理的复杂度方面对上述理论的实践。这其中包括了一段有趣的Redux推导。 软件复杂度 软件的首要技术使命是管理复杂…

论文浅尝 - EMNLP2020 | ConceptBert:视觉问题回答的概念感知表示

笔记整理 | 陈卓&#xff0c;浙江大学计算机科学与技术系&#xff0c;博士研究生研究方向 | 知识图谱/图神经网络/多模态论文链接&#xff1a;https://www.aclweb.org/anthology/2020.findings-emnlp.44.pdf代码&#xff1a;https://github.com/ZiaMaryam/ConceptBERT发表会议&…

LeetCode 215. 数组中的第K个最大元素(快速排序)

1. 题目 在未排序的数组中找到第 k 个最大的元素。请注意&#xff0c;你需要找的是数组排序后的第 k 个最大的元素&#xff0c;而不是第 k 个不同的元素。 示例 1: 输入: [3,2,1,5,6,4] 和 k 2 输出: 5示例 2: 输入: [3,2,3,1,2,4,5,5,6] 和 k 4 输出: 4说明: 你可以假设 k…

论文浅尝 - EMNLP2020 | 通过词重排序跨语言解析

笔记整理 | 吴林娟&#xff0c;天津大学硕士来源&#xff1a;EMNLP2020链接&#xff1a;https://www.aclweb.org/anthology/2020.findings-emnlp.265.pdf动机依赖解析研究快速发展&#xff0c;然而依赖解析的性能在很大程度上依赖于语料库的大小。获取足够的训练数据成本大且困…

Knowledge Review:超越知识蒸馏,Student上分新玩法!

文 | 陀飞轮知乎今天介绍一篇我司的文章Distilling Knowledge via Knowledge Review(缩写为KR)&#xff0c;提出知识蒸馏的新解法。之前在知乎回答过一个知识蒸馏的问题&#xff0c;为何感觉“知识蒸馏”这几年没有什么成果&#xff1f;https://www.zhihu.com/question/3098084…

美团App 插件化实践

背景 在Android开发行业里&#xff0c;插件化已经不是一门新鲜的技术了&#xff0c;在稍大的平台型App上早已是标配。进入2017年&#xff0c;Atlas、Replugin、VirtualAPK相继开源&#xff0c;标志着插件化技术进入了成熟阶段。但纵观各大插件框架&#xff0c;都是基于自身App的…

评测征集 | 2021全国知识图谱与语义计算大会

CCKS 2021将组织知识图谱相关评测竞赛&#xff0c;旨在为研究者们提供一个测试技术、算法、及系统的平台。与CCKS 2020 一样&#xff0c;CCKS 2021 的评测任务仍然采用 Biendata 在线平台发布和评测。CCKS 2020评测竞赛环节共设立8个任务&#xff0c;吸引了2300多支参赛队伍。大…

论文投稿新规则,不用跑出SOTA,还能“内定”发论文?!

文 | Sheryc_王苏从5月初开始&#xff0c;CV圈似乎开始了一阵MLP“文艺复兴”的热潮&#xff1a;在短短4天时间里&#xff0c;来自谷歌、清华、牛津、Facebook四个顶级研究机构的研究者分别独立发布了4篇关于MLP结构在图像任务上取得不错效果的论文。虽然研究本身令人兴奋&…

即时配送的订单分配策略:从建模和优化

最近两年&#xff0c;外卖的市场规模持续以超常速度发展。近期美团外卖订单量峰值达到1600万&#xff0c;是全球规模最大的外卖平台。目前各外卖平台正在优质供给、配送体验、软件体验等各维度展开全方位的竞争&#xff0c;其中&#xff0c;配送时效、准时率作为履约环节的重要…

LeetCode677. 键值映射(Trie树)

1. 题目 实现一个 MapSum 类里的两个方法&#xff0c;insert 和 sum。 对于方法 insert&#xff0c;你将得到一对&#xff08;字符串&#xff0c;整数&#xff09;的键值对。字符串表示键&#xff0c;整数表示值。如果键已经存在&#xff0c;那么原来的键值对将被替代成新的键…

技术实践 | ICDE2021-大规模知识图谱预训练及电商应用

本文作者 | 张文&#xff08;浙江大学&#xff09;、黄志文&#xff08;阿里巴巴&#xff09;、叶橄强&#xff08;浙江大学&#xff09;、文博&#xff08;浙江大学&#xff09;、张伟&#xff08;阿里巴巴&#xff09;&#xff0c;陈华钧*&#xff08;浙江大学&#xff09;接…

吊打BERT、GPT、DALL·E,跨模态榜单新霸主诞生!

文 | 赵一静最近&#xff0c;三个重量级榜单&#xff0c;视觉推理VCR、文本推理ANLI、视觉问答VQA同时被统一模态模型UNIMO霸榜。一个模型统一了视觉和文本两大主阵地&#xff0c;重塑了小编的认知和期望。如此全能&#xff0c;堪称是AI领域的外&#xff08;一&#xff09;星&a…

Spring Data REST 远程代码执行漏洞(CVE-2017-8046)分析与复现

前言 2009年9月Spring 3.0 RC1发布后&#xff0c;Spring就引入了SpEL&#xff08;Spring Expression Language&#xff09;。对于开发者而言&#xff0c;引入新的工具显然是令人兴奋的&#xff0c;但是对于运维人员&#xff0c;也许是噩耗的开始。类比Struts 2框架&#xff0c;…

体验paddle2.0rc版本API-Model--实现Mnist数据集模型训练

原文链接&#xff1a;体验paddle2.0rc版本API-Model–实现Mnist数据集模型训练&#xff1a;https://blog.csdn.net/weixin_44604887/article/details/109566281 尝试Mnist训练 导入需要的包导入Mnist数据集组网搭建网络查看模型参数查看模型网络&#xff08;自动命名&#xff0…

LeetCode 648. 单词替换(Trie树)

1. 题目 在英语中&#xff0c;我们有一个叫做 词根(root)的概念&#xff0c;它可以跟着其他一些词组成另一个较长的单词——我们称这个词为 继承词(successor)。例如&#xff0c;词根an&#xff0c;跟随着单词 other(其他)&#xff0c;可以形成新的单词 another(另一个)。 现…