如何解决为什么更改树的PreOrder遍历的实现是错误的?
请告诉我为什么在遍历树的PreOrder方法2中是错误的。我应该使用哪种方式?那么主要的区别是TreeNode *
是method1的返回值,而TreeNode *root
是method2的参数。
method1: right
// Decodes your encoded data to tree.
TreeNode* deserialize(string data) {
istringstream in(data);
return deserialize(in);
}
TreeNode *deserialize(istringstream &in)
{
string val;
in >> val;
if (val == "#") {
return nullptr;
}
TreeNode *root = new TreeNode(stoi(val));
root->left = deserialize(in);
root->right = deserialize(in);
return root;
}
method2: wrong
// Decodes your encoded data to tree.
TreeNode* deserialize(string data) {
istringstream in(data);
TreeNode *res;
deserialize(in,res);
return res;
}
void deserialize(istringstream &in,TreeNode *root)
{
string val;
in >> val;
if (val == "#") {
root = nullptr;
return;
}
root = new TreeNode(stoi(val));
deserialize(in,root->left);
deserialize(in,root->right);
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。