我正在阅读一些关于 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;
};