https://leetcode-cn.com/problems/xu-lie-hua-er-cha-shu-lcof/
思路:自己规定格式,字符串处理很恶心的不过可以用 o s t r i n g s t r e a m ostringstream ostringstream和 s t r i n g s t r e a m stringstream stringstream简化操作。想法其实很简单, b f s bfs bfs构造就行了。
/**
* 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) {
ostringstream s;
queue<TreeNode*> q;
q.push(root);
TreeNode* fon;
while(!q.empty())
{
fon=q.front();
q.pop();
if(fon!=NULL)
{
s<<fon->val<<' ';
q.push(fon->left);
q.push(fon->right);
}
else
s<<"null ";
}
return s.str();
}
// Decodes your encoded data to tree.
TreeNode* deserialize(string data) {
queue<TreeNode*> q;
TreeNode *root=new TreeNode(0);
TreeNode *fon,*tmp;
string res;
stringstream s(data);
s>>res;
if(res=="null")
root=nullptr;
else
root->val=stoi(res);
q.push(root);
while(s>>res)
{
fon=q.front();
q.pop();
if(res=="null")
fon->left=nullptr;
else
{
tmp=new TreeNode(stoi(res));
fon->left=tmp;
q.push(tmp);
}
s>>res;
if(res=="null")
fon->right=nullptr;
else
{
tmp=new TreeNode(stoi(res));
fon->right=tmp;
q.push(tmp);
}
}
return root;
}
};
// Your Codec object will be instantiated and called as such:
// Codec codec;
// codec.deserialize(codec.serialize(root));