用 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/