方法:递归,对不同的数组取中点作为二叉树的头节点

    1. class Solution {
    2. public:
    3. TreeNode* sortedArrayToBST(vector<int>& nums) {
    4. return creatbst(nums,0,nums.size()-1);
    5. }
    6. TreeNode* creatbst(vector<int>& nums,int left,int right){
    7. if(left>right){
    8. return nullptr;
    9. }
    10. int mid=(right+left)/2;
    11. TreeNode* root=new TreeNode(nums[mid]);
    12. root->left=creatbst(nums,left,mid-1);
    13. root->right=creatbst(nums,mid+1,right);
    14. return root;
    15. }
    16. };