我正在为学校的项目编写一个程序,要求我们根据从文件中读取的数据(在本例中为字符串)创建Binary Search Tree
。当输入重复的字符串时,树应该通过递增整数值来允许重复。
TreeNode是一个结构如下:
struct TreeNode {
string word;
int count;
TreeNode * left;
TreeNode * right;
};
我遇到的问题是当我尝试调用插入函数时,程序崩溃了。我运行调试器,我收到以下错误:
在Proj12.2.exe中0x00E2A87C抛出异常:0xC0000005:Access 违规读取位置0x00000014。
导致此错误的原因是什么? 以下是相关代码的其余部分:
TreeNode * Root = new TreeNode;
Root->right = NULL;
void insert(TreeNode *& root, string item) { //insert function, called by Root->right,temp
if (root->word == item) {
root->count++;
return;
}
if (root == NULL && root->word != item) {
root = new TreeNode;
root->left = NULL;
root->right = NULL;
root->word = item;
root->count = 1;
return;
}
if (item < root->word) {
insert(root->left, item);
}
if (item > root->word) {
insert(root->right, item);
}
}
答案 0 :(得分:0)
if(root == NULL)应该是您在尝试使用 - &gt;访问任何数据成员之前执行的第一次检查运营商。 条件:if(root-&gt; word == item) condition:if(root == NULL&amp;&amp; root-&gt; word!= item)
您的root为NULL,然后您尝试访问导致崩溃的root-&gt;字。您正尝试使用无效指针访问数据成员。