二叉搜索树通过插入建立不知道为什么失败?

问题遇到的现象和发生背景

二叉搜索树插入出现问题,只能插入第一个元素

问题相关代码
#include 
#include 

typedef int ElementType;
typedef struct TNode *Position;
typedef Position BinTree;
struct TNode{
    ElementType Data;
    BinTree Left;
    BinTree Right;
};

void PreorderTraversal( BinTree BT ); 
BinTree Insert( BinTree BST, ElementType X );

int main()
{
    BinTree BST;
    ElementType X;
    int N, i;

    BST = NULL;
    scanf("%d", &N);
    for ( i=0; i
        scanf("%d", &X);
        BST = Insert(BST, X);
    }
    printf("Preorder:"); PreorderTraversal(BST); printf("\n");
    return 0;
}
/* 你的代码将被嵌在这里 */
void PreorderTraversal( BinTree BT )
{
    if(!BT) return;
    printf("%d ",BT->Data);
    PreorderTraversal(BT->Left);
    PreorderTraversal(BT->Right);
}
BinTree Insert( BinTree BST, ElementType X )
{
    if(!BST) 
    {
        BinTree t=(TNode*)malloc(sizeof(TNode));
        t->Data =X;
        t->Left=t->Right=NULL;
        BST=t;
    }
    else if(X<BST->Data) Insert(BST->Left,X);
    else if(X>BST->Data) Insert(BST->Right,X);
    return BST;
}

运行结果及报错内容

img

如下修改试试

BinTree Insert( BinTree BST, ElementType X )
{
    if(BST == NULL) 
    {
        BinTree t=(TNode*)malloc(sizeof(TNode));
        t->Data =X;
        t->Left=t->Right=NULL;
        BST = t;
    }
    else if(X<BST->Data) 
            BST->Left = Insert(BST->Left,X);
    else if(X>BST->Data) 
            BST->Right = Insert(BST->Right,X);
    return BST;