在C++中,你可以使用以下代码将给定的函数转换为等效的版本:
#include <iostream>
#include <queue>
#include <string>
struct Node {
int value;
Node* left;
Node* right;
};
void preSerial(Node* head, std::queue<std::string>& ans) {
if (head == nullptr) {
ans.push("null");
} else {
ans.push(std::to_string(head->value));
preSerial(head->left, ans);
preSerial(head->right, ans);
}
}
std::queue<std::string> preSerial(Node* head) {
std::queue<std::string> ans;
preSerial(head, ans);
return ans;
}
int main() {
// 示例用法
Node* root = new Node{1, nullptr, nullptr};
root->left = new Node{2, nullptr, nullptr};
root->right = new Node{3, nullptr, nullptr};
std::queue<std::string> serialized = preSerial(root);
while (!serialized.empty()) {
std::cout << serialized.front() << " ";
serialized.pop();
}
// 期望输出: "1 2 null null 3 null null "
// 清理内存
delete root->left;
delete root->right;
delete root;
return 0;
}
这个C++代码中实现了相同的逻辑,使用了std::queue和指向节点的指针。注意,在C++中需要手动释放内存以避免内存泄漏。
内容由零声教学AI助手提供,问题来源于学员提问




