【剑指Offer】面试题62:序列化二叉树
来源:互联网 发布:linux 调整根目录大小 编辑:程序博客网 时间:2024/05/23 21:07
整理自剑指Offer
一:题目描述
请实现两个函数,分别用来序列化和反序列化二叉树
二:解题思路
序列化二叉树:选择一种遍历方式,将二叉树的遍历结果保存在字符串中
反序列化二叉树:根据生成的字符串,构造原始的树
如果二叉树的序列化是从根节点开始,那么相应反序列化的根节点的数值读出来的时候就可以开始,因此我们可以采用先序遍历的方式。
当遍历二叉树碰到NULL指针时,这些NULL指针序列化一个特殊的字符(如‘$’),另外,结点的数值之间要用一个特殊字符分开‘,’
三:代码实现
/*struct TreeNode { int val; struct TreeNode *left; struct TreeNode *right; TreeNode(int x) : val(x), left(NULL), right(NULL) { }};*/class Solution {public: void SerializeCore(TreeNode *root,string &str){ if(root==NULL){ str+="$"; return ; } str+=to_string(root->val); str+=","; SerializeCore(root->left,str); SerializeCore(root->right,str); } char* Serialize(TreeNode *root) { if(root==NULL) return NULL; string str; //生成string 字符串 SerializeCore(root,str); //将string字符串保存在char* 类型中 char* result=new char[str.length()]; int i; for(i=0;i<str.length();i++) result[i]=str[i]; return result; } TreeNode* decode(char *&str){ if(*str=='$'){ str++;//跳过‘,’ return NULL; } int num=0; //将字符转化为整数 while(*str!=','){ num=num*10+((*str)-'0'); str++; } str++;//跳过‘,’ //创建结点 TreeNode* root=new TreeNode(num); root->left=decode(str); root->right=decode(str); return root; } TreeNode* Deserialize(char *str) { if(str==NULL) return NULL; return decode(str); }};
阅读全文
0 0
- 【剑指Offer学习】【面试题62:序列化二叉树】
- 剑指offer-面试题62:序列化二叉树
- 《剑指offer》面试题62 序列化二叉树
- 剑指offer--面试题62:序列化二叉树
- 剑指Offer面试题62:序列化二叉树
- 剑指offer-面试题62-序列化二叉树
- 【剑指Offer】面试题62:序列化二叉树
- 【剑指offer】面试题37:序列化二叉树
- java面试题(剑指offer):序列化二叉树
- 剑指offer 面试题62 序列化和反序列化二叉树
- 《剑指Offer》学习笔记--面试题62:序列化二叉树
- 剑指offer——面试题62:序列化二叉树
- 剑指offer面试题63 序列化二叉树(java实现)
- 面试题62:序列化二叉树
- 面试题62:序列化二叉树
- 面试题62:序列化二叉树
- 《剑指Offer》面试题-重建二叉树
- 《剑指Offer》面试题:平衡二叉树
- android表情编码与解码
- vbox出现Failed to opencreate the internal network错误,无法启动虚拟机
- Scala中zip或者zipWithIndex的计数器用法
- [资源分享]making a simple RPG in UNITY (教程压缩包分享)
- C#中的is和as操作符
- 【剑指Offer】面试题62:序列化二叉树
- 动态规划法求解硬币找零(Java)
- TP的空操作、空控制器、跨控制器调用
- git部分命令
- (Caffe,LeNet)网络训练流程(二)
- 关于获取RadioGroup里面的RadioButton的值,多行RadioGroup展示清除选中效果
- btrace
- IntelliJ IDEA部署web项目不成功问题
- Java防止SQL注入