Есть два сценария ios:
- , когда я пытался удалить весь tr ie, он удалялся как root = 0x0 или NULL
- , но когда я попытался удалить записи одну за другой и после удаления последней записи при проверке, был ли root НЕДЕЙСТВИТЕЛЕН или нет, он дал мне root = не НЕДЕЙСТВИТЕЛЕН
Теперь это моя вся tr ie код удаления -
void del(Node *&cur) {
if (!cur) {
return;
}
for (int i = 0; i < size; i++)
if (cur->next[i])
del(curr, cur->next[i]);
delete cur;
cur = NULL;
}
Использование - del(root)
Из окна отладки -
Теперь мой указатель удаления c узел код -
void remove(Node *&curr) {
if (curr->parent) {
Node *temp = curr->parent;
if (curr->wordCount > 1) {
curr->wordCount--;
}
else {
temp->next[curr->id] = NULL;
delete curr;
curr = NULL;
}
remove(temp);
}
else {
curr->wordCount--;
if (curr->wordCount == 0) {
delete curr;
curr = NULL;
}
}
}
void findRemoveItem(char *str) {
Lookup var = search(str);
if (var.isAvailable) {
var.lookedupNode->isLeaf = false;
remove(var.lookedupNode);
}
else {
printf("Not a word\n");
}
}
Использование - findRemoveItem(arr[7]) //arr -> string array
из окна отладки -
На первом изображении, root узел был удален полностью. Но на втором изображении это выглядело как удаленное, но не полностью. Почему это так?
Весь код
Заранее спасибо.