序列化二叉树

序列化二叉树

http://www.nowcoder.com/questionTerminal/cf7e25aa97c04cc1a68c8f040e71fb84

(1) 先序遍历构造字符串
(2) 确定一个数组下标根据字符串按序还原树结构

/*
struct TreeNode {
    int val;
    struct TreeNode *left;
    struct TreeNode *right;
    TreeNode(int x) :
            val(x), left(NULL), right(NULL) {
    }
};
*/
class Solution {
public:
    string s="";
    void dfs(TreeNode* p){
        if(p==NULL){
            s+="#";
            return;
        }
        s+=to_string(p->val);
        s+="!";
        dfs(p->left);
        dfs(p->right);
    }
    char* Serialize(TreeNode *root) {    
        dfs(root);
        return (char*)s.data();
    }
    int idx=0;
    TreeNode* Deserialize(char *str) {
        if(str[idx]==0) return NULL;
        if(str[idx]=='#'){
            idx++;
            return NULL;
        }

        int val=0;
        while(str[idx]>='0'&&str[idx]<='9'){
            val = val*10+str[idx]-'0';
            idx++;
        }
        idx++;
        TreeNode* p = new TreeNode(val);
        p->left = Deserialize(str);
        p->right = Deserialize(str);
        return p;
    }
};
全部评论
你好,我想知道为什么把string s=""放到char* Serialize(TreeNode *root)里面会报错呢
1 回复 分享
发布于 2020-09-26 16:20

相关推荐

02-24 10:34
门头沟学院 Java
已注销:之前发最美的女孩基本爱答不理,发最帅的hr终于有反馈了,女孩子也要自信起来
点赞 评论 收藏
分享
评论
7
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务