我编写了一个将节点插入二叉搜索树的函数。但是,当尝试在 Visual Studio 2013 中构建解决方案时,我收到以下消息:“BST.exe 中 0x00FD4CD0 处的未处理异常:0xC0000005:访问冲突读取位置 0xCCCCCCCC。” 以下是我的代码。
void BST::insert(int value) {
Node* temp = new Node();
temp->data = value;
if(root == NULL) {
root = temp;
return;
}
Node* current;
current = root;
Node* parent;
parent = root;
current = (temp->data < current->data) ? (current->leftChild) : (current->rightChild);
while(current != NULL) {
parent = current;
current = (temp->data < current->data) ? (current->leftChild) : (current->rightChild);
}
if(temp->data < parent->data) {
parent->leftChild = temp;
}
if(temp->data > parent->data) {
parent->rightChild = temp;
}
}
然后在我的主要功能中,我有:
int main() {
BST bst;
bst.insert(10);
system("pause");
}
当我删除 bst.insert(10); 在我的主要功能中,我不再收到未处理的异常。
以下是我的结构的初始化
struct Node {
int data;
Node* leftChild;
Node* rightChild;
Node() : leftChild(NULL), rightChild(NULL) {}
};
struct BST {
Node* root;
void insert(int value);
BST() : root(NULL) {}
};