我正在爲學校的一個項目編寫一個程序,要求我們根據從文件讀取的數據(在此情況下爲字符串)創建Binary Search Tree
。當輸入重複字符串時,樹應允許通過遞增整數值來實現重複。動態分配內存時訪問衝突
樹節點是一個結構如下:
struct TreeNode {
string word;
int count;
TreeNode * left;
TreeNode * right;
};
我遇到的問題是,當我嘗試調用插入功能的程序崩潰。我運行調試器,出現以下錯誤:
Exception thrown at 0x00E2A87C in Proj12.2.exe: 0xC0000005: Access violation reading location 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);
}
}
你的第二個如果必須保持第一個 – Incomputable
'root == NULL && root-> word!= item' - 如果第一個表達式是真的,你真的*想要執行第二個? – WhozCraig
@WhozCraig不應該短路嗎? – Incomputable