我正在阅读一些关于 AVL 树的示例源代码,部分实现是以下函数:
AvlTree MakeEmpty( AvlTree T )
{
if( T != NULL )
{
MakeEmpty( T->Left );
MakeEmpty( T->Right );
free( T );
}
return NULL;
}
在 main 函数中,它的使用如下:
int main()
{
AvlTree T;
T = MakeEmpty( NULL );
然后主函数移动到将数字插入到 AVL 树中。我的主要问题是
a) MakeEmpty 函数的目的是什么?我知道它是一个递归函数,但我不明白它的目的。
b) 为什么将 NULL 值传递给该函数?
非常感谢!
此外,AVLTree 是指向此结构的指针:
struct AvlNode
{
ElementType Element;
AvlTree Left;
AvlTree Right;
int Height;
};