You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C++实现二叉树遍历及高度计算时int函数无返回值报错如何解决

问题原因

报错触发的核心原因是Height函数的空节点判断分支存在语法问题:该函数声明的返回类型为int,但当root == NULL(当前节点为空)时,你直接使用了无返回值的return;语句,不符合语法要求。

修复方案

二叉树空节点的高度约定为0,你只需要把该分支的返回语句补充返回值即可,修改后的Height函数代码如下:

int Height(node *root)
{
    if (root == NULL)
    {
        return 0; // 补充返回空节点高度0,替换原无值return
    }

    int left_height = Height(root->left);
    int right_height = Height(root->right);
    if (left_height > right_height)
    {
        return left_height + 1;
    }
    else
    {
        return right_height + 1;
    }
}

你也可以直接用标准库的max函数简化高度判断逻辑,和原有逻辑完全等价:

int Height(node *root)
{
    if (root == NULL) return 0;
    return max(Height(root->left), Height(root->right)) + 1;
}
额外注意事项

你当前编写的中序遍历Inorder、后序遍历Postorder函数逻辑存在错误,和先序遍历逻辑完全一致,无法输出对应顺序的遍历结果:

  • 中序遍历顺序为:遍历左子树 → 输出当前节点值 → 遍历右子树
  • 后序遍历顺序为:遍历左子树 → 遍历右子树 → 输出当前节点值

修正后的两个遍历函数代码如下:

void Inorder(struct node *root)
{
    if (root == NULL)
    {
        return;
    }
    Inorder(root->left);
    cout << root->data << " ";
    Inorder(root->right);
}

void Postorder(struct node *root)
{
    if (root == NULL)
    {
        return;
    }
    Postorder(root->left);
    Postorder(root->right);
    cout << root->data << " ";
}

内容的提问来源于stack exchange,提问作者Tanya Gupta

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.18 14:36:04