二叉排序树的创建以及前序遍历,不报错但是出不来结果,不知道哪里出错了

问题遇到的现象和发生背景
#include <stdio.h>
#include <stdlib.h>
typedef struct BiTNode{
    int data;
    struct BiTNode *lchild;
    struct BiTNode *rchild;
}BiTNode; 
typedef BiTNode *BiTree;
//向二叉排序树中插入元素 
void Insert(BiTree root,int x){
    BiTNode *s;
    if(root == NULL) { 
        s=(BiTNode *)malloc(sizeof(BiTNode)); 
        s->data = x;
        s->lchild = s->rchild = NULL;
        root = s;
    }
    else if (root->data >x){
        Insert(root->lchild, x);
    }
    else {
        Insert(root->rchild, x);
    }

}
//创建二叉排序树
BiTree CreateTree(){
    BiTree root;
    root=(BiTNode *)malloc(sizeof(BiTNode)); 
    int k=0;
    while(k!=-1){
        scanf("%d",&k);
        Insert(root, k);
    }   
    return root;
}
//先序递归遍历
void PreOrder(BiTree root){
    if(root==NULL) return;
    printf("%c",root->data);
    PreOrder(root->lchild);
    PreOrder(root->rchild);
} 
int main() {
    BiTree root=CreateTree();
    PreOrder(root);
    return 0;
}

问题相关代码,请勿粘贴截图
运行结果及报错内容
我的解答思路和尝试过的方法
我想要达到的结果

你建树的时候

img


节点一直是root。
能遍历就见了鬼。