我正在尝试序列化然后反序列化二叉树,但是在反序列化部分似乎遇到了障碍。我有以下代码:// Encodes a tree to a single string.
string serialize(TreeNode* root) {
std::ostringstream oss;
preorder_traversal(root, oss);
return oss.str();
}
void preorder_traversal(TreeNode *root, ostringstream &oss) {
if(root == nullptr) {
oss << "null" << " "; // String streams are delimited by the space character
return;
}
oss << root->val << " "; // String streams are delimited by the space character
preorder_traversal(root->left, oss);
preorder_traversal(root->right, oss);
}
// Decodes your encoded data to tree.
TreeNode* deserialize(string data) {
std::istringstream iss(data);
TreeNode *root;
deserialize_tree(root, iss);
return root;
}
void deserialize_tree(TreeNode *root, istringstream &iss) {
string current_val;
iss >> current_val;
if(current_val == "null") return;
root = new TreeNode(std::stoi(current_val));
// Testing to see if root->val is being assigned the correct value
std::cout << root->val << std::endl;
deserialize_tree(root->left, iss);
deserialize_tree(root->right, iss);
};
[我面临的问题是,即使std::cout << root->val << std::endl显示值已分配给TreeNodes函数中新创建的deserialize_tree(),但当我最终在return root函数中获得deserialize()时,得到一个空的输出,这让我很不舒服。