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

二叉搜索树search函数传入树中不存在的参数时程序崩溃问题

问题根因

当搜索的整数不在二叉搜索树中时,search函数最终会返回NULL,你在main函数中直接对返回的指针执行->data操作,属于空指针解引用,这是程序崩溃的直接原因。你的search函数本身递归逻辑没有问题,不需要修改内部判断条件。

修复方案
  • 先接收search的返回值,做非空校验后再访问成员变量,匹配你预期不存在时输出0的需求,修改main函数的输出逻辑即可:
int main()
{
   node *R = NULL;
   R = insert(R, 33);
   insert(R,12);
   insert(R, 40);
   insert(R, 36);
   insert(R, 21);
  
   node* res = search(R, 65);
   if (res == NULL) {
       cout << 0 << endl;
   } else {
       cout << res->data << endl;
   }
}
  • 可选补充优化:给treemax、treemin函数增加入参非空校验,避免传入空树时也出现空指针解引用崩溃:
int treemax(node *root)
{
   if (root == NULL) {
       // 空树可根据业务需求返回默认值,这里示例返回0
       return 0;
   }
   while(root->right != NULL)
   {
     root = root->right;
   }
   return root->data;
}

int treemin(node *root)
{
  if (root == NULL) {
      return 0;
  }
  while(root->left != NULL)
  {
    root = root->left;
  }
  return root->data;
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 02:45:03