我正在尝试了解 BST 以及如何将元素迭代地插入其中。我的节点结构实现如下所示:
struct Node{
Node *left;
Node *right;
T data; //template class
};
我的插入实现如下所示:
template<typename T>
bool BST<T>::Insert(const T value)
{
Node *newNode = new Node;
newNode -> data = value;
newNode -> left = NULL;
newNode -> right = NULL;
if(root == NULL) {root = newNode;} //If the BST is empty
else
{//The BST is not empty
Node *ptr = root; //points to the current Node
Node *ptr_parent; //points to the parent Node
while(ptr != NULL)
{
if((ptr -> data) > value)
{
ptr_parent = ptr;
ptr = ptr -> left;
}
if((ptr -> data) < value)
{
ptr_parent = ptr;
ptr = ptr -> right;
}
}
}
ptr = newNode; //insert the newNode at the spot
if((ptr_parent -> data) < value)
ptr_parent -> right = newNode;
else
ptr_parent -> left = newNode;
return true;
}
将第一个节点添加到空树中时插入有效,但每当我尝试添加更多节点时都会出现分段错误。我知道有些帖子展示了如何实现对 BST 的插入,但其中大多数展示了递归方法,而那些带有迭代示例的帖子不完整或过于具体。谢谢你。