c - 在 C 中删除二叉树的最快方法

标签 c binary-tree

用 C 语言删除二叉树的最快方法是什么?为什么? 有没有比这更好的方法:

void deleteTreeUtil(struct node* node)
   {
       if (node == NULL) return;
       deleteTreeUtil(node->left);
       deleteTreeUtil(node->right);
       printf("\n Deleting node: %d", node->data);
       free(node);
    }

void deleteTree(struct node** node_ref)
{
  deleteTreeUtil(*node_ref);
  *node_ref = NULL;
}

最佳答案

提高大树性能的小优化:

void _deleteTree(struct node* node)
{
       if (node->left)
       {
             _deleteTree(node->left);
             free(node->left);
       }
       if (node->right)
       {
             _deleteTree(node->right);
             free(node->right);
       }
}

void deleteTree(struct node** node_ref)
{
     if (*node_ref)
     {
          _deleteTree(*node_ref);
          free(*node_ref);
     }
}

关于c - 在 C 中删除二叉树的最快方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42799209/

相关文章:

c - Linux进程间通信

ios - 将 RSA 私钥加载到 EVP_PKEY

c - 引用数组 == 数组

c - 获取整数的位数

c - 在不修改参数的情况下将指针传递给函数?

c - 如何计算二叉树的平均高度?

c++ - 二叉树编译错误的迭代器

Python:替换全局变量

c - 如何在二叉未排序树中查找叶节点

c++ - 是否有任何有效的方法来填充平衡树结构