LeetCode 428. 序列化和反序列化 N 叉树(DFS)
文章目录
- 1. 题目
- 2. 解题
1. 题目
序列化是指将一个数据结构转化为位序列的过程,因此可以将其存储在文件中或内存缓冲区中,以便稍后在相同或不同的计算机环境中恢复结构。
设计一个序列化和反序列化 N 叉树的算法。
一个 N 叉树是指每个节点都有不超过 N 个孩子节点的有根树。
序列化 / 反序列化算法的算法实现没有限制。
你只需要保证 N 叉树可以被序列化为一个字符串并且该字符串可以被反序列化成原树结构即可。
例如,你需要序列化下面的 3-叉 树。
为 [1 [3[5 6] 2 4]]
。你不需要以这种形式完成,你可以自己创造和实现不同的方法。
注意:
N 的范围在 [1, 1000]
不要使用类成员 / 全局变量 / 静态变量来存储状态。
你的序列化和反序列化算法应是无状态的。
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/serialize-and-deserialize-n-ary-tree
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
2. 解题
类似题目:LeetCode 297. 二叉树的序列化与反序列化(前序遍历&层序遍历)
- 在上题的基础上记录下有多少个子节点
/*
// Definition for a Node.
class Node {
public:int val;vector<Node*> children;Node() {}Node(int _val) {val = _val;}Node(int _val, vector<Node*> _children) {val = _val;children = _children;}
};
*/class Codec {public:// Encodes a tree to a single string.string serialize(Node* root) {ostringstream out;serialize(root,out);return out.str();}// Decodes your encoded data to tree.Node* deserialize(string data) {istringstream in(data);return deserialize(in);}
private:void serialize(Node* root,ostringstream &out){if(root){out<< root->val << ' ';out<< root->children.size() << ' ';//记录子节点个数for(auto p : root->children)serialize(p, out);}elseout << "N "; }Node* deserialize(istringstream &in){string val;in >> val;if(val == "N"){return NULL;}Node* root = new Node(stoi(val));in >> val;int n = stoi(val);while(n--)//子节点个数{Node* p = deserialize(in);root->children.push_back(p);} return root;}
};
92 ms 173.1 MB
我的CSDN博客地址 https://michael.blog.csdn.net/
长按或扫码关注我的公众号(Michael阿明),一起加油、一起学习进步!
LeetCode 428. 序列化和反序列化 N 叉树(DFS)相关推荐
- LeetCode 428. 序列化和反序列化 N 叉树***
具体思路: 多叉树问题序列化问题,层序bfs简单一点: 唯一注意一下的就是序列化时候-1的坑: 对于一个节点,其子节点有无必须标记,否则会在生成的时候出现问题: 具体代码: // // Definit ...
- LeetCode——二叉树序列化与反序列化
文章目录 题目 思路 问题一 问题二 代码实现 题目 请实现两个函数,分别用来序列化和反序列化二叉树. 设计一个算法来实现二叉树的序列化与反序列化.不限定序列 / 反序列化算法执行逻辑,你只需要保证一 ...
- LeetCode 297. 二叉树的序列化与反序列化(前序遍历层序遍历)
文章目录 1. 题目 2. 解题 2.1 前序遍历 2.2 层序遍历 1. 题目 序列化是将一个数据结构或者对象转换为连续的比特位的操作,进而可以将转换后的数据存储在一个文件或者内存中,同时也可以通过 ...
- 二叉树序列化与反序列化相关题目(Leetcode题解-Python语言)
297. 二叉树的序列化与反序列化(剑指 Offer 37. 序列化二叉树)(剑指 Offer II 048. 序列化与反序列化二叉树) class Codec:def serialize(self, ...
- LeetCode 297. 二叉树的序列化与反序列化 | Python
文章目录 297. 二叉树的序列化与反序列化 题目 解题思路 代码实现 实现结果 总结 297. 二叉树的序列化与反序列化 题目来源:力扣(LeetCode)https://leetcode-cn.c ...
- 【LeetCode】【HOT】297. 二叉树的序列化与反序列化(BFS)
[LeetCode][HOT]297. 二叉树的序列化与反序列化 文章目录 [LeetCode][HOT]297. 二叉树的序列化与反序列化 package hot;import java.util. ...
- LintCode-7-二叉树的序列化和反序列化
二叉树的序列化和反序列化 设计一个算法,并编写代码来序列化和反序列化二叉树.将树写入一个文件被称为"序列化",读取文件后重建同样的二叉树被称为"反序列化". 如 ...
- 【LeetCode 二叉树专项】二叉树的序列化与反序列化(297)
文章目录 1. 题目 1.1 示例 1.2 说明 1.3 提示 1.4 进阶 2. 解法一(前序遍历) 2.1 分析 2.2 解答 2.3 复杂度 3. 解法二(后序遍历) 3.1 分析 3.2 解答 ...
- Java实现 LeetCode 297 二叉树的序列化与反序列化
297. 二叉树的序列化与反序列化 序列化是将一个数据结构或者对象转换为连续的比特位的操作,进而可以将转换后的数据存储在一个文件或者内存中,同时也可以通过网络传输到另一个计算机环境,采取相反方式重构得 ...
最新文章
- mysql自然连接和等值连接_mysql sql99语法 内连接等值连接
- eclipse如何部署到tomcat上的
- 戴维·阿克:品牌如何避免陷入竞争…
- python turtle画五边形_python画一朵玫瑰给你
- Dubbo(六)使用SpringBoot搭建dubbo服务提供者工程
- raspberry pi_尝试8个有趣的Raspberry Pi项目
- Python图像处理丨OpenCV+Numpy库读取与修改像素
- [凯立德]2014秋季版C1204-C7K05-3321J0L(SP2)WinCE版
- Leetcode每日一题:424.longest-repeating-character-replacement(替换后的最长重复字符)
- Java自动化测试框架-04 - TestNG之Test Method篇 - (详细教程)
- 在Linux下如何查CC攻击?
- innodb的锁时间
- ABBYY FineReader PDF for Mac(多功能PDF转换工具)
- Atitit 知识图谱管理 谱存储选型 与查询 目录 1. 知识图谱存储系统的选型。	1 1.1. 图数据库 neo4j 适合大规模数据	1 1.2. 关系数据库 小规模	2 2. 知识图谱查询语言
- SqlServer数据库分离与附加
- mysql如何实现透视表功能_SQL 实现数据透视表功能
- 【码上实战】【立体匹配系列】经典AD-Census: (5)扫描线优化
- 傻瓜式解决神舟系电脑rerun占用过高
- APT组织最喜欢的工具 Cobalt Strike (CS) 实战
- 淘宝获取商品详情API接口
热门文章
- python 3.6.5编译安装_Linux系统安装Python3.6.5
- Spatial Transformer Networks(STN)
- 【解决问题】OpenCV(3.4.1) Error: Parsing error (xx.yaml(13): Incorrect indentation) in icvYMLParseValue
- kernel移植——从三星官方内核开始移植
- matlab中关于@的作用(函数表达式句柄)
- VS2013崩溃,无法打开项目的解决方案
- [POJ3252]Round Number(数位dp)
- Splay初步【bzoj1503】
- Chrome 扩展 最近的历史 HistoryBar v1.1
- 随感 -- 2013/08/16