c - C语言如何清空二叉树中的子树?

标签 c tree binary-tree subtree

目前当我调用这个函数时,它会删除所有子节点并释放我传递给它的节点的内存,但该节点仍然链接到它的父节点并且包含垃圾。
我需要能够将我传递的节点的父节点(左子节点或右子节点)设置为等于 NULL,以便程序在遍历树时不会崩溃。

这是我已有的代码:

void emptySubtree(BinaryNode* node) {
    if (node == NULL)
        return;

    emptySubtree(node->left);
    emptySubtree(node->right);
    free(node);
}

这是我的函数调用:emptySubtree(tree->root->left)

最佳答案

void emptySubtree(BinaryNode* node){
    if (node == NULL)
       return;
    else{
        emptySubtree(node->left);
        emptySubtree(node->right);
    }
    free(node);
    node = NULL;
}

尝试将指针节点设置为空。调用免费电话后的好习惯。

关于c - C语言如何清空二叉树中的子树?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26771112/

相关文章:

c - 通过单个函数发送各种 scsi 命令

c - valgrind - 大小为 1 的无效读取地址 0x0 在 execlp 期间未进行堆栈、分配或(最近)释放

mysql - 如何正确排序 SQL 中的物化路径?

php - 在 PHP 中通过树结构递归的特定算法

c# - ReheapUp 和 ReheapDown 递归到迭代的转换 C#

与 OR (|) 运算符混淆

c - 如何在C中动态初始化二维数组?

java - 我应该使用什么类型的列表/ map 来对数据进行分类但保持顺序?

java - 在二叉搜索树上打印重复项

c# - 从中序和先序遍历创建树的程序(迭代方法?)