题解 | #序列化二叉树#

序列化二叉树

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

层次遍历序列化二叉树
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) {    
        queue<TreeNode *> q;
        q.push(root);
        string s="";
        while(!q.empty()){
            int n=q.size();
            for(int i=0;i<n;i++){
                TreeNode* temp=q.front();
                q.pop();
                if(temp==NULL)
                {
                    s+="#,";
                    continue;
                }
                s+=to_string(temp->val)+",";
                q.push(temp->left);
                q.push(temp->right);
            }
        }
        char *ret=new char[s.length()+1];
        strcpy(ret,s.c_str());
        return ret;
    }
    TreeNode* Deserialize(char *str) {
        string s=str;
        TreeNode* ans=NULL;
        int cur=0;
        queue<TreeNode*> q;
        if(s[cur]!='#'){
            int num=0;
            while(s[cur]!=','){
                num=num*10+s[cur]-'0';
                cur++;
            }
            cur++;
            ans=new TreeNode(num);
            q.push(ans);
        }else return NULL;
        while(!q.empty()){
            TreeNode* node=q.front();
            q.pop();
            if(s[cur]!='#'){
                int num=0;
                 while(s[cur]!=','){
                    num=num*10+s[cur]-'0';
                    cur++;
                 }
                cur++;
                TreeNode* temp=new TreeNode(num);
                node->left=temp;
                q.push(temp);
            }else{
                cur+=2;
            }
           if(s[cur]!='#'){
                int num=0;
                 while(s[cur]!=','){
                    num=num*10+s[cur]-'0';
                    cur++;
                 }
                cur++;
                TreeNode* temp=new TreeNode(num);
                node->right=temp;
               q.push(temp);
            }else{
              cur+=2;
           }
            
        }
        return ans;
    }
};
全部评论

相关推荐

今天 10:23
已编辑
湖南师范大学 计调
太久没更新,前几天看到一条评论,说“牛客就是当年那群做题区毕业了开始找工作还收不住那股味”的群体。字里行间透着居高临下的评判,不是,他该不会以为自己很幽默?很犀利吧?作为在牛客混了不算短日子的用户,我感到的不只是被冒犯,更是一种深刻的悲哀——这种以“松弛感”为名,对另一种生存策略的轻蔑,颇有一种自己考不上大学早早出来混社会,嘲笑考上大学的人是书呆子,然后大言不惭地说:死读书有什么用,人脉和资源才是硬道理。我不知道说这个话的人,手头究竟握着多少真正管用的人脉与资源,也不知道他这么傲慢地说出“那股味”的时候,是站在哪一个巨人的肩膀上,才能如此“松弛从容”地俯视众生,还能品评出别人身上“没收住”的余...
淬月星辉:这种评论把正常的努力扭曲成卷😂,说白了就是自己不努力,看着身边努力的人一个个都事业有成了,自己的心里开始不平衡了,就发这种酸言酸语。牛客可以说是我用过那么多平台里社区氛围最好的论坛了,用了大半年了,基本上没见过有人吵架的,都是在互帮互助提建议,帮忙看简历的,帮忙选offer的,帮忙指点学习路线的,分享工作经验和趣事的,我觉得这才是互联网该有的样子。
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务