Given an array where elements are sorted in ascending order, convert it to a height balanced BST.
// Source : https://oj.leetcode.com/problems/convert-sorted-array-to-binary-search-tree/
// Author : Chao Zeng
// Date : 2014-12-21
struct TreeNode {
int val;
TreeNode *left;
TreeNode *right;
TreeNode(int x): val(x),left(NULL),right(NULL){}
};
class Solution {
public:
TreeNode *create(vector<int> &num, int left, int right){
if (left > right)
return NULL;
int middle = (left + right) >> 1;
TreeNode *root = new TreeNode(num[middle]);
root->left = create(num,left,middle-1);
root->right = create(num,middle+1,right);
return root;
}
TreeNode *sortedArrayToBST(vector<int> &num) {
return create(num,0,num.size() - 1);
}
};