你提供的代码实现了二叉树的中序遍历,但是在递归调用后并没有将结果存储到 res
中,因此返回的结果将始终是一个空的 vector<int>
。你可以通过传递 res
作为参数来解决这个问题,或者直接在函数内进行修改。以下是修正后的代码:
#include <vector>
struct TreeNode {
int val;
TreeNode *left;
TreeNode *right;
TreeNode(int x) : val(x), left(NULL), right(NULL) {}
};
void inorderHelper(TreeNode* root, std::vector<int>& res) {
if (!root) return;
inorderHelper(root->left, res); // 遍历左子树
res.emplace_back(root->val); // 访问根节点
inorderHelper(root->right, res); // 遍历右子树
}
std::vector<int> inorderTraversal(TreeNode* root) {
std::vector<int> res;
inorderHelper(root, res);
return res;
}
修改说明:
- 引入辅助函数:使用一个辅助函数
inorderHelper
来进行递归,同时传入结果数组res
。 - 处理空指针:在遍历之前检查
root
是否为 nullptr。 - 构建结果:在每次访问节点时,将节点值添加到
res
中。
这样,你就能正确地获取二叉树的中序遍历结果了。
内容由零声教学AI助手提供,问题来源于学员提问