剑指offer——面试题62:序列化二叉树
2018-04-02 16:04
531 查看
剑指offer——面试题62:序列化二叉树
刚开始就不太懂序列化是几个意思。。反序列化的代码不是很懂啊,待会儿问问别人~
/* struct TreeNode { int val; struct TreeNode *left; struct TreeNode *right; TreeNode(int x) : val(x), left(NULL), right(NULL) { } }; */ class Solution { public: void Serialize(TreeNode *root, string &str) { if(root == NULL) { str += '#';//用#代表null return;//返回上一层 } else { string r = to_string(root->val);//值转字符串 str += r;//字符串拼接 str += ',';//数字后用,进行节点分隔 Serialize(root->left,str); Serialize(root->right,str); } } char* Serialize(TreeNode *root) { if(root == NULL) return NULL; string str; Serialize(root, str); //字符串转char * char *ret = new char[str.length()+1]; for(int i=0;i<str.length();i++) { ret[i] = str[i]; } ret[str.length()] = '\0'; return ret; } TreeNode *deserialize(char **str) { if(**str == '#')//空的时候返回 { ++(*str); return NULL; } int num = 0; while(**str != '\0' && **str != ',') { num = num*10 + ((**str) - '0'); //求出每个节点的值 ++(*str); } TreeNode *root = new TreeNode(num); if(**str == '\0') return root; else (*str)++;//跨过',' root->left = deserialize(str); root->right = deserialize(str); return root; } TreeNode* Deserialize(char *str) { if(str == NULL) return NULL; TreeNode *res = deserialize(&str); return res; } };
相关文章推荐
- 【剑指Offer学习】【面试题62:序列化二叉树】
- 剑指offer——面试题62:序列化二叉树
- 剑指offer 面试题62 序列化和反序列化二叉树
- 剑指offer--面试题62:序列化二叉树
- 剑指Offer面试题62:序列化二叉树
- 【剑指Offer】面试题62:序列化二叉树
- 【剑指offer-解题系列(62)】序列化二叉树
- 【剑指offer】面试题37:序列化二叉树
- 【剑指offer】面试题25:二叉树中和为某一值的路径
- 【剑指Offer学习】【面试题23:从上往下打印二叉树】
- 剑指offer-面试题62:序列化二叉树
- 剑指Offer面试题39二叉树的深度(以及判断平衡二叉树),面试题40数组中只出现一次的数字
- 【剑指offer】面试题39:二叉树的深度
- 剑指offer代码解析——面试题25二叉树中和为某一值的路径
- 【剑指Offer面试题】 九度OJ1521:二叉树的镜像
- 剑指offer面试题25-二叉树中和韦某一值的路径
- 剑指Offer_面试题23_从上到下打印二叉树(层序遍历)
- 【剑指offer Java】面试题6:重建二叉树
- 剑指offer_二叉树---序列化二叉树
- 《剑指offer》面试题62 序列化二叉树