c++ - 为什么我的 trie 根指针已被删除并分配为 NULL 时显示一些值?
问题描述
有两种情况:
- 当我试图删除整个 trie 时,它完全删除为 root = 0x0 或 NULL
- 但是当我尝试一个接一个地删除条目并且在检查root是否为NULL时删除最终条目后,它给了我root = not NULL
现在这是我的整个 trie 删除代码 -
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)
现在我删除特定的节点代码 -
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
在第一张图片中,根节点被完全删除。但是在第二张图片中,它看起来像是被删除了,但并不完全。这是为什么?
提前致谢。
解决方案
推荐阅读
- android - Android pre - API 26 (> API 26) 中的浮动小部件重启问题
- android - Android位图有最小值吗?
- ios - 在 SwiftUI 中更改语言和布局方向
- javascript - 在刷新时对 redux、firebas auth 做出反应 useSelector 显示登录页面或如果没有用户则重新定向
- c++ - C++:来自输入验证的无限循环
- java - JUnit5 Assert List of similar Object are equal
- discord.py - 您如何将不和谐命令的用户输入扩展到不止一个单词?
- python-3.x - 获取 Pandas 系列中拆分字符串列表的第一项
- c - 为什么我的 hello-1.c 和 Makefile 没有生成 .ko 文件?
- django - 如何解决 SSL SYSCALL 错误:芹菜文件描述符错误?