二叉搜索树中的分段错误

时间:2017-02-15 05:05:26

标签: segmentation-fault binary-search-tree

/*
Here is the piece of code causing segmentation fault
*/

int search_for_data(T_NODE head, int data){
    while(head){
        if( head->data > data)
            head = head->left;
        if( head->data < data)
            head = head->right;
        else
            return head->key;
      }
return -999999;// in case the node is not found
}

代码似乎是为少数几个值抛出分段错误但对其他人来说效果很好。我尝试搜索22并且存在分段错误。

1 个答案:

答案 0 :(得分:2)

else之前缺少if

    if( head->data > data)
        head = head->left;
    else if( head->data < data) /* this line */
        head = head->right;
    else
        return head->key;

使用原始代码,它会评估第一个if,然后立即评估第二个,但head可能在第一个NULL之后变为if