

解题思路:递归解决
因为数组是升序排列,那么一棵树的根结点就应该是其最中间的结点
递归结束条件:numsSize=0,返回NULL
1.找到数组中中间的数(numsSize/2),以其为val创建根结点
2.然后以中间数为分割,得到左右两个数组。左边数组个数为(numsSize/2),右边数组个数为(numsSize -numsSize/2 -1)
3.将根结点的左右孩子递归设置为sortedArrayToBST递归左右数组的结果
4.返回根节点
struct TreeNode* sortedArrayToBST(int* nums, int numsSize){
//递归结束条件:numsSize=0,返回NULL
if(!numsSize)
return NULL;
struct TreeNode* root = (struct TreeNode*)malloc(sizeof(struct TreeNode));
root->val = nums[numsSize/2];
root->left = sortedArrayToBST(nums, numsSize/2);
root->right = sortedArrayToBST(nums + numsSize/2 + 1, numsSize - numsSize/2 -1);
return root;
}
