我必须使用两个类(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;
}
答案 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;
}
};