C语言 二叉树Find_parent导致SegFault的方法



为什么这种方法会导致我出现段错误?我试图根据我的 C 经验以几种方式重写它,但仍然没有发生任何好事。

TreeNode *Find_parent(TreeNode *node, int value)
{
  assert(value != NULL);

 if(node->value == value) {
       return NULL;
  }
   if(node->value > value) {
       if(node->left != NULL) {
           if(node->left->value == value) {
              return node;
          } else {
             return Find_parent(node->left, value);
         }
      } else {
          return NULL;
      }
    } else {
          if(node->right != NULL) {
             if(node->right->value == value) {
                return node;
             } else {
                return Find_parent(node->right, value);
           }
        } else {
           return NULL;
        }
    }
    }

如果您在此处逐步复制原始代码,那么我认为您错误地这样做:

assert(value != NULL);

我想你的意思是这样做:assert(node != NULL);

基本上你还没有实现node NULL的检查,当NULL节点被取消引用时,它会导致Seg-Fault。

相关内容

  • 没有找到相关文章

最新更新