《剑指offer》面试题62 序列化二叉树
2016-09-03 16:58
639 查看
/*
题意:
序列
⇋ 二叉树 之间的互转
1,2,4,#,#,#,3,#,#
1
2 3
4 空 空 空
Get 的技能:
1 string 的追加 也是push_back(),和vector一样
2 string和char * 的追加 函数 不一样 前者是append() 后者是strcat();
3 形参的引用 &
*/
题意:
序列
⇋ 二叉树 之间的互转
1,2,4,#,#,#,3,#,#
1
2 3
4 空 空 空
Get 的技能:
1 string 的追加 也是push_back(),和vector一样
2 string和char * 的追加 函数 不一样 前者是append() 后者是strcat();
3 形参的引用 &
*/
/* struct TreeNode { int val; struct TreeNode *left; struct TreeNode *right; TreeNode(int x) : val(x), left(NULL), right(NULL) { } }; */ class Solution { public: char* Serialize(TreeNode *root) { if(!root) return "#"; //前序遍历 根 左右 string r = to_string(root->val); r.push_back(','); char * left= Serialize(root->left); char * right= Serialize(root->right); // r.append(left); //string的用法!!题目要求返回char * // r.append(right); char * l=new char [r.size()+strlen(left)+strlen(right)]; strcpy(l,r.c_str()); strcat(l,left); strcat(l,right); return l; } TreeNode* Deserialize(char * &str) { // if(*str=='#')return NULL; if(*str=='#'){ str++; //这一步的作用 (因为形参的 & 符号) return NULL; } int n=0; //字符转成 整数 while(*str!=',') { n=n*10+(*(str++)-'0'); } str++;//跳过这个逗号 TreeNode *root=new TreeNode(n); root->left=Deserialize(str); root->right=Deserialize(str); return root; } };<span style="font-family: Arial, Helvetica, sans-serif;"> </span>
相关文章推荐
- 剑指offer-面试题62:序列化二叉树
- 《剑指Offer》学习笔记--面试题62:序列化二叉树
- 剑指offer-面试题62-序列化二叉树
- 剑指offer面试题63 序列化二叉树(java实现)
- 剑指Offer面试题62:序列化二叉树
- 面试题62 序列化二叉树
- 剑指offer 面试题62 序列化和反序列化二叉树
- 面试题62:序列化二叉树
- 剑指offer——面试题62:序列化二叉树
- 剑指offer--面试题62:序列化二叉树
- 【剑指Offer】面试题62:序列化二叉树
- 《剑指offer》:[62]序列化二叉树
- java面试题(剑指offer):序列化二叉树
- 《剑指offer》:[62]序列化二叉树
- 面试题62:序列化二叉树
- 剑指offer——面试题62:序列化二叉树
- 【剑指Offer学习】【面试题62:序列化二叉树】
- 《剑指Offer》学习笔记--面试题23:从上往下打印二叉树
- 剑指offer-面试题39:二叉树的深度
- 剑指Offer---面试题6:重建二叉树