导致SegFault的二叉树Find_parent方法

时间:2014-01-02 17:35:03

标签: c segmentation-fault binary-tree

为什么这种方法会导致我出现段错误?根据我的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;
        }
    }

    }

1 个答案:

答案 0 :(得分:1)

如果您在此处逐步复制原始代码,那么我认为您错误地执行了此操作:

assert(value != NULL);

我认为你打算这样做:assert(node != NULL);

基本上,您尚未对node NULL进行检查,当NULL节点被取消引用时,会导致Seg-Fault。