如何将元素插入 BST

How can i insert element an element into BST?

本文关键字:插入 BST 元素      更新时间:2023-10-16

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

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

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