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

sumAtBis代码计算树指定深度和出错,请求问题排查

解决二叉树指定深度节点和计算时的空指针访问崩溃问题

问题根源

退出码3221225477对应Windows平台的空指针访问违规。你的sumAtBis函数未处理递归过程中当前节点为空的情况:当递归到空节点(比如叶子节点的子节点)但未到达目标深度n时,代码会直接调用left(a)或right(a),而这两个函数会访问空指针的成员(a->left/a->right),直接触发内存访问错误。

修复方案

在sumAtBis函数开头增加空节点判断,只要当前节点为空,直接返回0,无需继续递归:

int sumAtBis(tree a, int n, int i){
    // 新增:空节点直接返回0,避免后续空指针访问
    if(isEmpty(a))
        return 0;
    if(i==n){
        return root(a);
    }
    return sumAtBis(left(a),n,i+1)+sumAtBis(right(a),n,i+1);
}

修复验证

你的测试用例中,目标深度3的节点是f和g,值分别为1和-1,求和结果为0。修复后运行代码,printf会正确输出0,不再出现崩溃。

额外说明

  • 原代码中testSumAtBis和testSumAt函数逻辑混乱,和核心功能无关,若无需测试可直接删除。
  • 递归过程中务必优先处理空指针边界情况,避免非法内存访问。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.26 16:16:22