4.3 Given a sorted (increasing order) array, write an algorithm to create a binary search tree with minimal height.
struct TreeNode {
int val;
TreeNode *left, *right;
TreeNode(int v) : val(v), left(NULL), right(NULL) {}
};
TreeNode* createBST(vector<int> &arr, int l, int r) {
if (l > r) {
return NULL;
}
int m = (l + r) >> 1;
TreeNode *node = new TreeNode(arr[m]);
node->left = createBST(arr, l, m - 1);
node->right = createBST(arr, m + 1, r);
return node;
}
TreeNode* createBST(vector<int> &arr) {
return createBST(arr, 0, arr.size()-1);
}