Given an array where elements are sorted in ascending order, convert it to a height balanced BST.
Subscribe to see which companies asked this question
/**
* Definition for a binary tree node.
* struct TreeNode {
* int val;
* TreeNode *left;
* TreeNode *right;
* TreeNode(int x) : val(x), left(NULL), right(NULL) {}
* };
*/
class Solution {
public:
void buildTree(TreeNode *&root, vector<int> &nums, int left, int right) {
if(left > right) {
root = NULL;
return;
}
int temp = left+(right-left+1)/2;
root = new TreeNode(nums[temp]);
buildTree(root->left, nums, left, temp-1);
buildTree(root->right, nums, temp+1, right);
}
TreeNode *sortedArrayToBST(vector<int> &nums) {
TreeNode *root = NULL;
if(nums.size()==0) return root;
buildTree(root, nums, 0, nums.size()-1);
return root;
}
};