题目描述【Leetcode】
Given an array where elements are sorted in ascending order, convert it to a height balanced BST.
这道题就是把一个排好序的数组变成一个height balanced BST.那么就需要用二分法不断的进行节点的选择保证每次的节点选择都小于右子树且大于左子树。代码如下:
/**
* Definition for a binary tree node.
* struct TreeNode {
* int val;
* TreeNode *left;
* TreeNode *right;
* TreeNode(int x) : val(x), left(NULL), right(NULL) {}
* };
*/
TreeNode* f(vector<int>& nums, int begin, int end){
if(begin >= end) return NULL;
int mid = (begin+end)/2;
TreeNode*t = new TreeNode(nums[mid]);
t->left = f(nums,begin,mid);
t->right = f(nums,mid+1,end);
return t;
}
class Solution {
public:
TreeNode* sortedArrayToBST(vector<int>& nums) {
return f(nums,0,nums.size());
}
};