gpt4 book ai didi

c - root = NULL 在我的 C 程序中不起作用

转载 作者:行者123 更新时间:2023-11-30 20:03:50 27 4
gpt4 key购买 nike

我创建了以下函数来从树中删除节点:

void delNode(int key, Node *root) {
if(root->data != key && root->left != NULL) {
delNode(key,root->left);
}
if(root->data != key && root->right != NULL) {
delNode(key,root->right);
}
if(root->data != key && root->left == NULL) {
return;
}
if(root->data != key && root->right == NULL) {
return;
}
if(root->data == key) {
root = NULL;
return;
}
}

我有以下遍历函数

void printInorder(Node *root) {
if(root!=NULL) {
printInorder(root->left);
printf("%d ",root->data);
printInorder(root->right);
}
}

当我删除元素并显示树时,即使删除的节点也会显示。

PS:我想删除整棵树,保留节点作为根

最佳答案

这不会删除节点,根只是对内存位置的引用。
这里简单解释一下:
所以 root 就像一个指向盒子的箭头,你将箭头指向某个盒子(内存位置),比如包含一些内容的 box1。这里 root = NULL 您将箭头指向任何东西,即空白区域,但 box1 中仍然有内容。

您需要做的是,清除框中的内容1

free(root);   //This is make memory space available, i.e deallocates the memory 

此外,您的树节点删除逻辑有缺陷/不完整(可能不完整),但我相信您已经知道了。

关于c - root = NULL 在我的 C 程序中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46938580/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com