这道题刚开始的时候我的if中是left>=right即返回null,后面发现,这样就会使得右区间为开,找了很久的错误。
/**
-
Definition for a binary tree node.
-
struct TreeNode {
-
int val;
-
TreeNode *left;
-
TreeNode *right;
-
TreeNode(int x) : val(x), left(NULL), right(NULL) {}
-
};
/
class Solution {
public:
TreeNode creatree(int left,int right,vector&nums)
{
if(left>right)return NULL;
int mid=left+(right-left)/2;//使用(left+right)也行
TreeNode* root=new TreeNode(nums[mid]);
// root->val=nums[mid];
root->left=creatree(left,mid-1,nums);//将mid左边的数重新计算
root->right=creatree(mid+1,right,nums);//将mid右边的数重新计算
return root;}
TreeNode* sortedArrayToBST(vector& nums)
{
TreeNode* root= creatree(0,nums.size()-1,nums);
return root;
}
};