[leetcode_108]Convert Sorted Array to Binary Search Tree

注意什么都不输入的越界问题。
每次二分,因为排好序,以中点为根即可。
子树同理。
附上代码:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
class Solution {
public:
    TreeNode *sortedArrayToBST(vector<int> &num) {
        // IMPORTANT: Please reset any member data you declared, as
        // the same Solution instance will be reused for each test case.
        if(num.size() <= 0)
            return NULL;
        int size = num.size()-1;
        int mid = size / 2; 
        TreeNode * root = new TreeNode(num[mid]);
        TreeNode * left = GetNode(num,0,mid-1);
        TreeNode * right = GetNode(num,mid+1,size);
        root->left = left;
        root->right = right;
        return root;
    }
    TreeNode *GetNode(vector<int> &num,int a,int b)
    {
        if(a > b)
        {
            return NULL;
        }
        int mid = a + (b - a) / 2;
        TreeNode * node = new TreeNode(num[mid]);
        TreeNode * left = GetNode(num,a,mid-1);
        TreeNode * right = GetNode(num,mid+1,b);
        node->left = left;
        node->right = right;
        return node;
    }
};
Licensed under CC BY-NC-SA 4.0