C语言根据数组建立KD树的代码问题

数组x已经从小到大排好顺序
根据这个数组建立kd树(即每次选取中位数作为节点)
代码如下:

struct node *createKdTree(int x[],int size){

  struct node *root;
  root = malloc(sizeof(struct node));
  if(size==0){
    root=NULL;
  }
  else{
    int i=size/2;
    root->xValue=x[i];//根


    if(i>=1){
      root->left=createKdTree(x,i);//左
      root->right=createKdTree(x+i+1,i-1);//右
    }

  }

感觉是递归的部分出了问题,左子和右子的createKdTree()里的两个参数不知道应该是什么
现在总是Segmentation fault: 11的错误