/*采用分治法。排在中间的数作为根节点,前后段各作为左右子树,则左右
子树的高度差不会大于1.因此,可以递归的构建左右子树,从而建立整个平衡
二叉搜索树。*/
class Solution {
public:
TreeNode* sortedArrayToBST(vector<int>& nums) {
return sortedArrayToBST(nums, 0, nums.size()-1);
}
TreeNode* sortedArrayToBST(const vector<int> &nums, int left, int right){
if(left > right) return nullptr;
int mid = (left + right) / 2;
TreeNode *root = new TreeNode(nums[mid]);
root->left = sortedArrayToBST(nums, left, mid-1);
root->right = sortedArrayToBST(nums, mid+1, right);
return root;
}
};
LeetCode之Convert Sorted Array to Binary Search Tree
最新推荐文章于 2022-02-19 22:56:38 发布
