剑指offer——31序列化二叉树
2024-09-03 19:04:25
题目描述
请实现两个函数,分别用来序列化和反序列化二叉树
二叉树的序列化是指:把一棵二叉树按照某种遍历方式的结果以某种格式保存为字符串,从而使得内存中建立起来的二叉树可以持久保存。序列化可以基于先序、中序、后序、层序的二叉树遍历方式来进行修改,序列化的结果是一个字符串,序列化时通过 某种符号表示空节点(#),以 ! 表示一个结点值的结束(value!)。
二叉树的反序列化是指:根据某种遍历顺序得到的序列化字符串结果str,重构二叉树。
题解:
注意string 到 char*的转换
class Solution {
public:
char* Serialize(TreeNode *root) {
string str = "";
preOrder(root, str);
char *c = new char[str.size() + ];
strcpy(c, str.c_str());
return c;
}
void preOrder(TreeNode *root, string &str)
{
if (root == nullptr)
{
str += "#";
return;
}
str += to_string(root->val) + "!";
preOrder(root->left, str);
preOrder(root->right, str);
}
TreeNode* Deserialize(char *str) {
string s = str;
int index = ;
return createTree(s, index);
}
TreeNode* createTree(const string &str, int &index)
{
TreeNode* root = nullptr;
if (str[index] == '#' || index == str.size())
{
index++;
return root;
}
string s = "";
while (str[index] != '!')
s += str[index++];
index++;
root = new TreeNode(atoi(s.c_str()));
root->left = createTree(str, index);
root->right = createTree(str, index);
return root;
}
};
最新文章
- RTSP协议转换RTMP直播协议
- 粒子拼字效果(getImageData方法)
- gym923B
- python基础——继承和多态
- uploadify多次加载导致页面无法加载
- iOS 8创建交互式通知-备
- java和javascript获取word文档的书签位置对比
- 有用的BitConverter
- (step5.1.3)hdu 1213( How Many Tables——1213)
- BZOJ 4145: [AMPPZ2014]The Prices( 状压dp + 01背包 )
- 重新想象 Windows 8 Store Apps (4) - 控件之提示控件: ProgressRing; 范围控件: ProgressBar, Slider
- 【C语言的日常实践(十四)】constkeyword详细解释
- 最新Hadoop Shell完全讲解
- 02_HTML5+CSS详解第四天
- Bootstrap3 排版-缩略语
- oracle中动态SQL详解
- 2、jenkins+svn自动发布和回滚
- MATLAB 曲线形状,粗细,颜色使用大全
- 剑指Offer 59. 按之字形顺序打印二叉树 (二叉树)
- blfs(systemd版本)学习笔记-构建ibus-libpinyin使用中文输入法
热门文章
- NX二次开发-Ufun API Example
- NX二次开发-Block UI C++界面关于 在Block UI中UF_initialize();和UF_terminate();的使用
- Xcode Command Line Tools for Mac OS X 10.9 Mavericks
- eclipse git项目的冲突文件处理
- java xmltojson jsontoxml
- Java获取CPU占用率
- 2.4 webpack + gulp 构建完整前端工作流
- Linux 下tomcat+jdk+mysql安装
- 4.2.1 Vector bit-select and part-select addressing
- POJ 3130 How I Mathematician Wonder What You Are! (半平面交)