Leetcode 108. 将有序数组转换为二叉搜索树
题目
将一个按照升序排列的有序数组,转换为一棵高度平衡二叉搜索树。
本题中,一个高度平衡二叉树是指一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过 1。
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/convert-sorted-array-to-binary-search-tree
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
题解
今天不写思路了,直接上代码,思路明天补
TreeNode* createNode(vector<int>& nums, int l, int r){
int mid = l + (r - l) / 2;
if(l > r){
return NULL;
}else{
TreeNode* node = new TreeNode(nums[mid]);
node->left = createNode(nums, l, mid - 1);
node->right = createNode(nums, mid + 1, r);
return node;
}
// return NUll;
}
TreeNode* sortedArrayToBST(vector<int>& nums) {
int length = nums.size();
if(length <= 0){
return NULL;
}
sort(nums.begin(), nums.end());
int l = 0, r = length - 1, mid = l + (r - l) / 2;
TreeNode* head = new TreeNode(nums[mid]);
head->left = createNode(nums, l, mid - 1);
head->right = createNode(nums, mid + 1, r);
return head;
}