有序数组构建二次平衡搜索树
递归思想+二分查找
从根节点起,其val为数组二分查找中间值
对左右孩子再进行同样的操作
class Solution {
public:
TreeNode* to_bst(vector<int>& nums, int left, int right)
{
if (left > right)
{
return nullptr;
}
int mid = (left + right) / 2;
TreeNode* node = new TreeNode(nums[mid]);
//node->val = nums[mid];
node->left = to_bst(nums, left, mid - 1);
node->right = to_bst(nums, mid + 1, right);
return node;
}
TreeNode* sortedArrayToBST(vector<int>& nums) {
return to_bst(nums, 0, nums.size() - 1);
}
};