Discription:
Given an array where elements are sorted in ascending order, convert it to a height balanced BST.
Solution:
利用二分法将中间结点作为根节点,左半部分作为左子树,右半部分作为右子树,如此递归求解。
TreeNode* sortedArrayToBST(vector<int>& nums,int begin,int end)
{
TreeNode *root = NULL;
if(begin <= end){
int mid = (begin + end) >> 1;
root = new TreeNode(nums[mid]);
root->left = sortedArrayToBST(nums, begin, mid - 1);
root->right = sortedArrayToBST(nums, mid + 1, end);
}
return root;
}
TreeNode* sortedArrayToBST(vector<int>& nums) {
return sortedArrayToBST(nums, 0, nums.size() - 1);
}