C中结构体的初始化有关问题

求助C中结构体的初始化问题
typedef struct TreeNode *SearchTree;
typedef struct TreeNode *Position;
struct TreeNode{
        ElementType Element;
        SearchTree Left;
        SearchTree Right;
};
SearchTree MakeEmpty(SearchTree T){
        if(T != NULL){
                MakeEmpty(T->Left);
                MakeEmpty(T->Right);
                free(T);
        }
        return NULL;
}

main(){
        SearchTree stree;
        stree = MakeEmpty(stree);
}


为何是报Segmentation fault (core dumped)错误,但是将main中的  stree = MakeEmpty(stree);换成NULL后就正确?
------解决思路----------------------
用C语言的都不喜欢初始化吗
------解决思路----------------------
这段代码问题大了。
SearchTree stree; 定义了一个野指针(未指向任何有效内存)

if(T != NULL){
                MakeEmpty(T->Left);   访问野指针的左子树,后果未知。
                MakeEmpty(T->Right);访问野指针的右子树,后果未知。
                free(T);
        }

最起码要分配一个节点给它吧。
SearchTree stree = malloc ................................