E108.将有序数组转换为二叉搜索树
https://leetcode.cn/problems/convert-sorted-array-to-binary-search-tree/
思路:二分查找,选中间元素为根节点,递归构建左右子树,25分钟
cpp
class Solution {
private:
TreeNode* buildBST(vector<int>& nums, int left, int right) {
if (left > right) {
return nullptr;
}
int mid = left + (right - left) / 2;
TreeNode* root = new TreeNode(nums[mid]);
root->left = buildBST(nums, left, mid - 1);
root->right = buildBST(nums, mid + 1, right);
return root;
}
public:
TreeNode* sortedArrayToBST(vector<int>& nums) {
if (nums.empty()) {
return nullptr;
}
return buildBST(nums, 0, nums.size() - 1);
}
};