/**
* Definition for binary tree
* struct TreeNode {
* int val;
* TreeNode *left;
* TreeNode *right;
* TreeNode(int x) : val(x), left(NULL), right(NULL) {}
* };
*/
class Solution {
public:
TreeNode *build(vector<int> &num, int s, int t) {
if (s > t) return NULL;
int mid = (s + t) / 2;
TreeNode *parent = new TreeNode(num[mid]);
parent->left = build(num, s, mid - 1);
parent->right = build(num, mid + 1, t);
return parent;
}
TreeNode *sortedArrayToBST(vector<int> &num) {
// Start typing your C/C++ solution below
// DO NOT write int main() function
return build(num, 0, num.size() - 1);
}
};
Small Case: 0ms
Large Case: 92ms
Time: O(n)
Space: O(1)