将一个按照升序排列的有序数组,转换为一棵高度平衡二叉搜索树。
本题中,一个高度平衡二叉树是指一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过 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; }