做网站是属火的职业吗,苏州网站建设信息网络,html企业网站实例,淘客网站怎么做返利链接#xff1a;
449. 序列化和反序列化二叉搜索树
题意#xff1a;
把一个二叉搜索树变成字符串#xff0c;还要能变回来
解#xff1a;
和剑指 Offer 37. 序列化二叉树差不多#xff0c;那个是二叉树的序列化/反序列化-Hard
直接CV了#xff0c;懒: (
如果是二叉…链接
449. 序列化和反序列化二叉搜索树
题意
把一个二叉搜索树变成字符串还要能变回来
解
和剑指 Offer 37. 序列化二叉树差不多那个是二叉树的序列化/反序列化-Hard
直接CV了懒: (
如果是二叉搜索树的话就相当于知道了中序遍历前序/后序弄一个就行
实际代码
string int2string(int x)
{string ret;if(x0) return 0;while(x){retchar(0x%10)ret;x/10;}return ret;
}
int string2int(string s)
{int ret0;for(auto ch:s){retret*10int(ch-0);}return ret;
}
void node2string(string s,TreeNode* root)
{s.append(int2string(root-val));if(root-left!nullptr){s.append(,);node2string(s,root-left);}else s.append(,N);if(root-right!nullptr){s.append(,);node2string(s,root-right);}else s.append(,N);
}
string serialize(TreeNode* root)
{string tree;if(rootnullptr) return tree;node2string(tree,root);//couttree:treeendl; return tree;
}
void string2node(TreeNode* root,string data)
{string s;int r0;while(rdata.size() data[r]!,) r;sdata.substr(0,r);data.erase(0,min(r1,int(data.size())));if(sN) root-leftnullptr;else{root-leftnew TreeNode(string2int(s));string2node(root-left,data);}r0;while(rdata.size() data[r]!,) r;sdata.substr(0,r);data.erase(0,min(r1,int(data.size())));if(sN) root-rightnullptr;else{root-rightnew TreeNode(string2int(s));string2node(root-right,data);}
}
TreeNode* deserialize(string data)
{TreeNode* newHeadnullptr;if(data.empty()) return newHead;string s;int r0;while(rdata.size() data[r]!,) r;sdata.substr(0,r);data.erase(0,min(r1,int(data.size())));newHeadnew TreeNode(string2int(s));string2node(newHead,data);return newHead;
}限制
树中节点数范围是 [0, 104]0 Node.val 104题目数据 保证 输入的树是一棵二叉搜索树。