Description:
Given an array where elements are sorted in ascending order, convert it to a height balanced BST.
For this problem, a height-balanced binary tree is defined as a binary tree in which the depth of the two subtrees of every node never differ by more than 1.
Example:
Given the sorted array: [-10,-3,0,5,9], One possible answer is: [0,-3,9,-10,null,5], which represents the following height balanced BST: 0 / -3 9 / / -10 5
class Solution { public: TreeNode* sortedArrayToBSTCore(vector<int>& nums, int left, int right) { if(left>right) return NULL; TreeNode* root=new TreeNode(0); int core=(right+left+1)/2; root->val=nums[core]; root->left=sortedArrayToBSTCore(nums,left,core-1); root->right=sortedArrayToBSTCore(nums,core+1,right); return root; } TreeNode* sortedArrayToBST(vector<int>& nums) { int begin=0; int end=nums.size()-1; return sortedArrayToBSTCore(nums,begin,end); } };