我想了解二叉树中节点的删除。这是我从教程中找到的解释相同的代码片段。如何删除C中二叉树中的元素?
节点如下:
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)
只是释放叶指针的内存?是不是所有的节点仍然连接?清算如何进行?
如何删除二叉树中的元素?一次只有零和零。 –
树被完全破坏,因此没有必要断开叶子。你可以断开它们,但它是没用的。你为什么不试试呢? –
我建议你在纸上写下这张小图片,然后尝试使用这种算法释放它以获取它的一个挂图。我建议这种方法处理所有关于树木的事情 –