【剑指Offer】【树】序列化二叉树
题目:请实现两个函数,分别用来序列化和反序列化二叉树
二叉树的反序列化是指:根据某种遍历顺序得到的序列化字符串结果str,重构二叉树。
/*
struct TreeNode {
int val;
struct TreeNode *left;
struct TreeNode *right;
TreeNode(int x) :
val(x), left(NULL), right(NULL) {
}
};
*/
class Solution {
public:
//序列化
void do_Serialize(TreeNode *root, string &s)
{
if(root == nullptr)
{
s += '#';
s += ',';
return;
}
//std::to_string() 数值转换字符串
s += to_string(root->val);
s += ',';
do_Serialize(root->left,s);
do_Serialize(root->right,s);
}
char* Serialize(TreeNode *root)
{
if(root == nullptr)
{
return nullptr;
}
string str = "";
do_Serialize(root,str);
//返回值是char *
char *ret = new char[str.length() + 1]; //'\0'
strcpy(ret, str.c_str());
return ret;
} //反序列化
TreeNode* do_Deserialize(string &s)
{
if(s.empty())
{
return nullptr;
}
if (s[0] == '#')
{
s = s.substr(2); //从s中去掉#,
return nullptr;
}
TreeNode *ret = new TreeNode(stoi(s)); s = s.substr(s.find_first_of(',') + 1); ret->left = do_Deserialize(s);
ret->right = do_Deserialize(s);
return ret;
}
TreeNode* Deserialize(char *str)
{
if(str == nullptr)
{
return nullptr;
}
string s(str);
return do_Deserialize(s);
}
};
【剑指Offer】【树】序列化二叉树的更多相关文章
- 力扣 - 剑指 Offer 37. 序列化二叉树
目录 题目 思路 代码 复杂度分析 题目 剑指 Offer 37. 序列化二叉树 思路 序列化其实就是层序遍历 但是,要能反序列化的话,前.中.后.层序遍历是不够的,必须在序列化时候保存所有信息,这样 ...
- 【剑指Offer】序列化二叉树 解题报告(Python)
[剑指Offer]序列化二叉树 解题报告(Python) 标签(空格分隔): 剑指Offer 题目地址:https://www.nowcoder.com/ta/coding-interviews 题目 ...
- 剑指 Offer 37. 序列化二叉树 + 二叉树的层次遍历
剑指 Offer 37. 序列化二叉树 Offer_37 题目描述 题目解析 本题主要考察的就是二叉树的层次遍历. 层次遍历时可以根据二叉树的特点将空结点也进栈. 反序列化时同样可以根据层次遍历的思路 ...
- 【Java】 剑指offer(37) 序列化二叉树
本文参考自<剑指offer>一书,代码采用Java语言. 更多:<剑指Offer>Java实现合集 题目 请实现两个函数,分别用来序列化和反序列化二叉树. 思路 一般情况下 ...
- Go语言实现:【剑指offer】序列化二叉树
该题目来源于牛客网<剑指offer>专题. 请实现两个函数,分别用来序列化和反序列化二叉树. 二叉树的序列化是指:把一棵二叉树按照某种遍历方式的结果以某种格式保存为字符串,从而使得内存中建 ...
- 剑指offer:序列化二叉树
题目描述: 请实现两个函数,分别用来序列化和反序列化二叉树 思路分析: 这里一开始有点不明白题目的意思.实际上序列化应该指把二叉树用某种编码方式表示,这里一般是字符串的形式.而反序列就是将之前生成的序 ...
- 剑指Offer 61. 序列化二叉树 (二叉树)
题目描述 请实现两个函数,分别用来序列化和反序列化二叉树 题目地址 https://www.nowcoder.com/practice/cf7e25aa97c04cc1a68c8f040e71fb84 ...
- 每日一题 - 剑指 Offer 37. 序列化二叉树
题目信息 时间: 2019-06-29 题目链接:Leetcode tag:序列化 二叉树 队列 难易程度:中等 题目描述: 请实现两个函数,分别用来序列化和反序列化二叉树. 示例: 1 / \ 2 ...
- 剑指offer——31序列化二叉树
题目描述 请实现两个函数,分别用来序列化和反序列化二叉树 二叉树的序列化是指:把一棵二叉树按照某种遍历方式的结果以某种格式保存为字符串,从而使得内存中建立起来的二叉树可以持久保存.序列化可以基于先 ...
- [剑指Offer] 61.序列化二叉树
题目描述 请实现两个函数,分别用来序列化和反序列化二叉树 /* struct TreeNode { int val; struct TreeNode *left; struct TreeNode *r ...
随机推荐
- Js生成图片验证码
上代码 /** * [使用说明] * 1.生成验证码 * 函数: * generateRandomCode( dom对象Id ); * 例: * generateRandomCode( 'id' ); ...
- AspNetCore底层源码剖析(三)IOC
title: AspNetCore底层源码剖析(三)IOC date: 2022-09-21 13:20:01 categories: 后端 tags: - .NET 介绍 每个 ASP.NET Co ...
- YMOI 2019.6.29
题解 YMOI 2019.6.29 放弃FAIOJ,用cena考了一次试.被全方位吊打.. T1 开灯 题面: 在一条无限长的路上,有一排无限长的路灯,编号为1,2,3,4,--. 每一盏灯只有两种可 ...
- Zotero自定义引文样式
注意 在实际使用中发现还是有许多与要求不同的地方,之后会再次进行修改,特此记录 -----2022/11/28 16:57 目标格式: 期刊:[序号]作者.题名[J].刊名,出版年份,卷号 ( 期号 ...
- echarts系列-带图教你调整左右位置x轴样式网格虚线刻度居中双轴Y轴滚动上下移动文字旋转改分割线颜色部分字体改色折注混合,X轴的颜色,X轴字体颜色,调整柱子颜色,调整小图标图例的大小和位置,鼠标hover时候的样式,用纵向阴影
上面先说注意事项 1.如果使用show hidden控制图表显示隐藏,某些切换效果很奇怪,比如饼图,会从左上角开始放大,很丑,这个时候我们可以设置其宽高来解决问题,给其设置宽高后,切换的奇怪效果即可消 ...
- 解决前端发送post 请求出现403,cancled等问题
问题一:页面初始加载,部分接口首次请求options是200,然后第二次post请求cancled状态 1. 检查console控制台报错,如果是接口问题,就不用操心了 2.如果是其他报错,那么就不用 ...
- antd 3.x升4.x踩坑之路~
我们是袋鼠云数栈 UED 团队,致力于打造优秀的一站式数据中台产品.我们始终保持工匠精神,探索前端道路,为社区积累并传播经验价值. 兼容性问题 第三方依赖兼容问题 React - 最低 v16.9,部 ...
- KingbaseES dblink异常unsupported for database link
KingbaseES使用dblink查询报错:unsupported for database link 适用于: KingbaseES所有版本. 问题现象: KingbaseES创建kingbase ...
- Linux07-常用命令-权限
1.组 1.1基本说明 在linux中的每个用户必须属于一个组,不能独立于组外.在linux中每个文件有所有者.所在组.其它组的概念. 1) 文件所有者 谁创建的这个文件,文件的所有者就是谁 2) 文 ...
- windows10环境下的RabbitMQ安装步骤
RabbitMQ是一个在AMQP协议标准基础上完整的,可复用的企业消息系统.它遵循Mozilla Public License开源协议,采用 Erlang 实现的工业级的消息队列(MQ)服务器,Rab ...