Given an integer array nums where the elements are sorted in ascending order, convert it to a height balanced binary search tree.

Input: nums = [-10,-3,0,5,9]
Output: [0,-3,9,-10,null,5]
Explanation: [0,-10,5,null,-3,null,9] is also accepted:


Input: nums = [1,3]
Output: [3,1]
Explanation: [1,null,3] and [3,1] are both height-balanced BSTs.
From: LeetCode
Link: 108. Convert Sorted Array to Binary Search Tree
/**
* Definition for a binary tree node.
* struct TreeNode {
* int val;
* struct TreeNode *left;
* struct TreeNode *right;
* };
*/
struct TreeNode* helper(int* nums, int start, int end) {
if (start > end) {
return NULL;
}
int mid = start + (end - start) / 2;
struct TreeNode* node = (struct TreeNode*)malloc(sizeof(struct TreeNode));
node->val = nums[mid];
node->left = helper(nums, start, mid - 1);
node->right = helper(nums, mid + 1, end);
return node;
}
struct TreeNode* sortedArrayToBST(int* nums, int numsSize){
return helper(nums, 0, numsSize - 1);
}