ZBLOG

vector inorderTraversal(TreeNode* root) { vectorres; if(!root)return vector{}; if(root->left){ inorderTraversal(root->left); } res.emplace_back(root->val); if(root->right){ ...

你提供的代码实现了二叉树的中序遍历,但是在递归调用后并没有将结果存储到 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;
}

修改说明:

  1. 引入辅助函数:使用一个辅助函数 inorderHelper 来进行递归,同时传入结果数组 res
  2. 处理空指针:在遍历之前检查 root 是否为 nullptr。
  3. 构建结果:在每次访问节点时,将节点值添加到 res 中。

这样,你就能正确地获取二叉树的中序遍历结果了。


内容由零声教学AI助手提供,问题来源于学员提问

本站部分文章来源于网络,版权归原作者所有,如有侵权请联系站长删除。
转载请注明出处:https://golang.0voice.com/?id=18631

分享:
扫描分享到社交APP
上一篇
下一篇
发表列表
游客 游客
此处应有掌声~
评论列表

还没有评论,快来说点什么吧~

联系我们

在线咨询: 点击这里给我发消息

微信号:3007537140

上班时间: 10:30-22:30

关注我们
x

注册

已经有帐号?