题目
算法思想 :因为数组是有序的所以我们构造的时候可以保证数组区间[i-j],其中根节点的值是nums[mid],mid = i + (j-i)/2,递归构建就可以了。
TreeNode* init_tree(vector<int>& nums,int l,int r)
{
TreeNode* root = new TreeNode(0);
if(l <= r)
{
int mid = l + (r-l)/2;
root->val = nums[mid];
root->left = init_tree(nums,l,mid-1);
root->right = init_tree(nums,mid+1,r);
}
else
return NULL;
return root;
}
TreeNode* sortedArrayToBST(vector<int>& nums) {
if(nums.size() == 0)
return NULL;
return init_tree(nums,0,nums.size()-1);
}