Skip to content

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);
    }
};