本题思路比较简单,找出有序数组的中间元素,将其作为分割点,把有序数组分割为左子树区间和右子树区间,再分别进行递归即可。
代码如下:
class Solution {
public:
TreeNode* sortedArrayToBST(vector<int>& nums) {
if(nums.empty()) return NULL;
int cur = nums.size() / 2;
TreeNode* root = new TreeNode(nums[cur]);
vector<int> lnums(nums.begin(), nums.begin() + cur);
vector<int> rnums(nums.begin() + cur + 1, nums.end());
root->left = sortedArrayToBST(lnums);
root->right = sortedArrayToBST(rnums);
return root;
}
};