剑指offer 编程题(58):序列化二叉树
2017-12-31 17:17
417 查看
请实现两个函数,分别用来序列化和反序列化二叉树
class Solution { public: string str; string serializeHelper(TreeNode *root) {//按先序DFS序列化 if(root==NULL){ str+="#,"; return str; } str+=to_string(root->val); str+=','; serializeHelper(root->left); serializeHelper(root->right); return str; } TreeNode* deserializeHelper(string &str){//反序列化 if(str.empty())return NULL; if(str[0]=='#'){//当前字符对应空结点,跳过 str=str.substr(2);//跳过当前'#'和','开始截取 return NULL;//返回空子树 } TreeNode *pRoot=new TreeNode(stoi(str));//stoi:string转int,后面出现逗号被截断,只转换当前数字字符 str=str.substr(str.find_first_of(',')+1);//跳过下一个逗号截取 pRoot->left=deserializeHelper(str);//重建左子树 pRoot->right=deserializeHelper(str);//重建右子树 return pRoot; } char* Serialize(TreeNode *root) { if(root==NULL)return NULL; str = serializeHelper(root); char* r=new char[str.size()+1]; strcpy(r,str.c_str()); return r; } TreeNode* Deserialize(char *str) { if(str==NULL)return NULL; string s(str); return deserializeHelper(s); } };
相关文章推荐
- 剑指offer 序列化二叉树
- 剑指offer 序列化二叉树
- 剑指offer--序列化二叉树
- 剑指offer--序列化二叉树
- 剑指offer-序列化二叉树
- 剑指offer--面试题62:序列化二叉树
- 剑指offer-序列化二叉树
- 剑指offer56--二叉树的序列化和反序列化
- 剑指Offer_58_对称的二叉树
- 剑指offer——序列化二叉树___
- 剑指offer:序列化二叉树。
- [剑指offer]序列化二叉树
- 剑指offer(五十)之序列化二叉树
- 剑指offer——面试题62:序列化二叉树
- 剑指offer 58 - 二叉树的下一个节点
- 剑指Offer面试题62:序列化二叉树
- (C++)剑指offer-58:对称的二叉树(树)
- 剑指offer 编程题(17):二叉树的镜像
- 【剑指Offer】面试题58:二叉树的下一个结点
- 剑指offer编程题——06 重建二叉树