我可以帮您翻译成中文。这是一篇关于二叉树节点删除的文章。以下是教程中提供的代码片段。
该节点如下所示:
struct node
{
int key_value;
struct node *left;
struct node *right;
};
来源: http://www.cprogramming.com/tutorial/c/lesson18.html
void destroy_tree(struct node *leaf)
{
if( leaf != 0 )
{
destroy_tree(leaf->left);
destroy_tree(leaf->right);
free( leaf );
}
}
我对free(leaf)
部分有疑问。作者声称这将递归删除从左下角最底部开始的所有节点。但是,free(leaf)
不仅仅只是释放叶子指针的内存吗?难道所有节点都还连接在一起吗?清除是如何进行的?