nikunjsoni

297

May 6th, 2021
146
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.25 KB | None | 0 0
  1. /**
  2.  * Definition for a binary tree node.
  3.  * struct TreeNode {
  4.  *     int val;
  5.  *     TreeNode *left;
  6.  *     TreeNode *right;
  7.  *     TreeNode(int x) : val(x), left(NULL), right(NULL) {}
  8.  * };
  9.  */
  10. class Codec {
  11. public:
  12.     // Encodes a tree to a single string.
  13.     string serialize(TreeNode* root) {
  14.         if(!root) return "#";
  15.         return to_string(root->val)+","+serialize(root->left)+","+serialize(root->right);
  16.     }
  17.  
  18.     // Decodes your encoded data to tree.
  19.     TreeNode* deserialize(string data) {
  20.         return dserialize(data);
  21.     }
  22.    
  23.     TreeNode* dserialize(string &data){
  24.         if(data[0] == '#') {
  25.             if(data.size() > 1) data = data.substr(2);
  26.             return NULL;
  27.         }
  28.         else{
  29.             TreeNode* node = new TreeNode(helper(data));
  30.             node->left = dserialize(data);
  31.             node->right = dserialize(data);
  32.             return node;
  33.         }
  34.     }
  35.    
  36.     int helper(string& data) {
  37.         int pos = data.find(',');
  38.         int val = stoi(data.substr(0,pos));
  39.         data = data.substr(pos+1);
  40.         return val;
  41.     }
  42. };
  43.  
  44. // Your Codec object will be instantiated and called as such:
  45. // Codec ser, deser;
  46. // TreeNode* ans = deser.deserialize(ser.serialize(root));
Advertisement
Add Comment
Please, Sign In to add comment