Given an array where elements are sorted in ascending order, convert it to a height balanced BST.
/**
* Definition for binary tree
* struct TreeNode {
* int val;
* TreeNode *left;
* TreeNode *right;
* TreeNode(int x) : val(x), left(NULL), right(NULL) {}
* };
*/
class Solution {
public:
TreeNode *sortedArrayToBST(vector<int> &num) {
if(num.size()==0) return NULL;
int middle = num.size()/2;
TreeNode *root = new TreeNode(num[middle]);
if(middle-1 >= 0){
vector<int> left(middle,0);
copy(num.begin(),num.begin()+middle,left.begin());
root->left = sortedArrayToBST(left);
}
if(middle+1<num.size()){
vector<int> right(num.end()-num.begin()-middle-1,0);
copy(num.begin()+middle+1,num.end(),right.begin());
root->right = sortedArrayToBST(right);
}
return root;
}
};