挺简单的一道题,学会了如何利用PReorder的数组建立一棵树的方法。之前的题目都是考察如何dfs一棵树,这道题第一次开创性的考察了如何建立一棵树,一开始确实有点懵逼。 同时atoi可以把整数转成string
/** * 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: string serial(TreeNode* root) { if(root==NULL) return "!#"; else return to_string(root->val)+"#"+serial(root->left)+serial(root->right); } // Encodes a tree to a single string. string serialize(TreeNode* root) { string res=serial(root); //cout<<res; return res; } TreeNode* deserial(string& data) { //get data string num; int i=0; for(i=0;i<data.size();i++) { if(data[i]!='#') num+=data[i]; else break; } data=data.substr(i+1); //cout<<i<<endl; //cout<<num<<" "<<data<<endl; //return NULL; if(num=="!") return NULL; else { //TreeNode temp; TreeNode* root=new TreeNode(atoi(num.c_str())); root->left=deserial(data); root->right=deserial(data); return root; } } // Decodes your encoded data to tree. TreeNode* deserialize(string data) { //return NULL; //string val; //int index=0; return deserial(data); }};// Your Codec object will be instantiated and called as such:// Codec codec;// codec.deserialize(codec.serialize(root));新闻热点
疑难解答