如何将元素插入BST?

时间:2019-04-26 15:06:11

标签: c++ binary-search-tree

我必须使用两个类(1-BSTnode,2-BSTFCI)构建一个二进制搜索树,并且我遇到了(插入)函数的问题。 当我对此功能进行测试时,它给了我运行时错误

有人可以帮我吗?

这是BSTnode的定义:

template <class T>
class BSTnode
{
public:
    T data;
    BSTnode<T>* left;
    BSTnode<T>* right;
    BSTnode()
    {
        left = right = NULL;
    }
};

这是BSTFCI的定义:

template <class T>
class BSTFCI
{
public:
    BSTnode<T>* root;
};

这是插入函数。

template <class T>
BSTnode<T>* BSTFCI<T>::Insert(BSTnode<T>*& node,T value)
    {
/// If the tree still empty.
    if(node == NULL)
    {
        node = create_new_node(value);
    }
    if(value < node->data)
    {
        node->left = Insert(node->left, value);
    }else if(value > node->data)
    {
        node->right = Insert(node->right,value);
    }

    return node;
}

主要功能

int main()
{
    BSTFCI<int> o;
    o.Insert(o.root,6);
    return 0;
}

1 个答案:

答案 0 :(得分:0)

我实现并检查了您的代码。我发现的唯一问题是您尚未在BSTFCI构造函数中将root的值初始化为NULL。您需要编写BSTFCI的构造函数,并将 root 的初始值指定为 NULL

class BSTFCI
{
public:
    BSTnode<T>* root;
    BSTnode<T>* Insert(BSTnode<T>*& node,T value);
    BSTFCI()
    {
        root = NULL;
    }
};