2021/8/29

CCPC网络赛

一场笔试

刷三题

总结复盘最近所学的知识。

 

 看了八章和第九章的一部分。

一题leetcode

/**
 * Definition for a binary tree node.
 * struct TreeNode {
 *     int val;
 *     TreeNode *left;
 *     TreeNode *right;
 *     TreeNode(int x) : val(x), left(NULL), right(NULL) {}
 * };
 */
class Codec {
public:

    // Encodes a tree to a single string.
    string serialize(TreeNode* root) {
        string ans = "";
        if(root == NULL) return ans;
        queue<TreeNode*> Q;
        Q.push(root);
        while(!Q.empty()){
            TreeNode *T = Q.front(); Q.pop();
            if(T != NULL){
                ans += to_string(T -> val);
                ans += "*"; 
                Q.push(T -> left); Q.push(T -> right);
            }
            else ans += "NULL*";
        }
        cout << "str " << ans << endl;
        return ans;
    }

    // Decodes your encoded data to tree.
    void dfs(TreeNode * &root,string &data,int &l){
        queue<TreeNode**>Q;
        Q.push(&root);
        while(!Q.empty()){
            TreeNode **T = Q.front(); Q.pop();
            int len = 0;
            if(data[l] == 'N'){
                *T = NULL; l += 5;
            } else {
                int s = l;
                while(l < data.size() && ((data[l] >= '0' && data[l] <= '9') || data[l] == '-')){
                    l ++; len ++;
                }
                string str = data.substr(s,len);
                int n = atoi(str.c_str());
                while(l < data.size() && data[l] == '*') ++ l;
                *T = (TreeNode *)malloc(sizeof(TreeNode));
                (*T) -> val = n;
                (*T) -> left = (*T) -> right = NULL;

                Q.push(&((*T) -> left));
                Q.push(&((*T) -> right));

            }
        }
        
       
        
        return ;
    }

    TreeNode* deserialize(string data) {
        TreeNode *root = NULL;
        if(data.size() == 0) return root;
        int l = 0;
        dfs(root,data,l);
        return  root;
    }
};

// Your Codec object will be instantiated and called as such:
// Codec ser, deser;
// TreeNode* ans = deser.deserialize(ser.serialize(root));

  

posted @ 2021-08-28 21:53  风生  阅读(33)  评论(0编辑  收藏  举报