C ++分段故障BST

时间:2017-06-19 01:34:22

标签: c++ segmentation-fault binary-search-tree

我目前正在开发二叉搜索树的c ++实现。一切似乎都很完美,但我的搜索功能给了我一些问题。

BinarySearchTree::node* BinarySearchTree::SEARCH(node* x, int key)
{
    if(root == NULL) {
            cout << "This is an empty tree." << endl;
            return NULL;

    } else {
            if(x->key == key) {
                    return x;
            }
            if(x == NULL) {
                    cout << "Value not in tree." << endl;
                    return x;
            }
            if(key < x->key ) {
                    return SEARCH(x->left, key);
            } else {
                    return SEARCH(x->right, key);
            }
    }
}

每次我搜索不在树中的键值时,以及当节点值为NULL时(例如,如果包含该值,则为max或min的值),这会给我一个分段错误。

1 个答案:

答案 0 :(得分:0)

首先检查NULL指针,然后检查其余指针。如果x为NULL,则DropDownList qty = (DropDownList)dlDiscountedProducts.Items[i].FindControl("ddlQuantity"); int cartQuantity = Convert.ToInt32(qty.SelectedValue.ToString().Trim()); 访问密钥将为您提供分段错误。

x->key