题目描述
blablabla
样例
/**
* Definition for a binary tree node.
* struct TreeNode {
* int val;
* TreeNode *left;
* TreeNode *right;
* TreeNode(int x) : val(x), left(NULL), right(NULL) {}
* };
*/
class Solution {
public:
string serialize(TreeNode* root) {
string res;
//if (!root) return res;
dfs_s(root, res);
return res;
}
void dfs_s(TreeNode* root, string & res) {
if (!root) {
res += "null ";//这个是null加空格。。。。
return;
}
res += to_string(root->val) + ' ';
dfs_s(root->left, res);
dfs_s(root->right, res);
}
TreeNode* deserialize(string data) {
int u = 0;
return dfs_d(data, u);
}
TreeNode * dfs_d(string data, int &u) {
if(u == data.size()) return NULL;
int k = u ;
while(data[k] != ' ') k++;
if (data[u] == 'n') {
u = k + 1;
return NULL;
}
int sum = 0;
for (int i = u; i < k; i ++) {
sum = sum * 10 + data[i] - '0';
}
u = k + 1;
auto root = new TreeNode(sum);
root->left = dfs_d(data, u);
root->right = dfs_d(data, u);
return root;
}
};
算法1
(暴力枚举) $O(n^2)$
blablabla
时间复杂度分析:blablabla
C++ 代码
blablabla
算法2
(暴力枚举) $O(n^2)$
blablabla
时间复杂度分析:blablabla
C++ 代码
blablabla
我靠,null后面需要加一个空格,不然就会报段错误。这个错误我杠了半天也没找出来,感谢老哥!!!!
if (data[u] == ‘n’) 这里的n是什么意思啊? 我是小白,请指教,谢谢。
n的意思是遇到了”null”
好的,谢谢
int sum = 0;
for (int i = u; i < k; i ++) {
sum = sum * 10 + data[i] - ‘0’;
}
测试数据中出现了负数,这里是不是要加入负数判断呀?
你说的对,这里没有考虑。