Skip to content

Commit 5495cea

Browse files
committed
2
1 parent a642a34 commit 5495cea

File tree

1 file changed

+12
-20
lines changed

1 file changed

+12
-20
lines changed

ConvertSortedArraytoBinarySearchTree/ConvertSortedArraytoBinarySearchTree.cpp

+12-20
Original file line numberDiff line numberDiff line change
@@ -10,27 +10,19 @@
1010
class Solution {
1111
public:
1212
TreeNode *sortedArrayToBST(vector<int> &num) {
13-
// Start typing your C/C++ solution below
14-
// DO NOT write int main() function
15-
if (num.empty()) return NULL;
16-
TreeNode *root = new TreeNode(0);
17-
dfs(root, 0, num.size() - 1, num);
18-
return root;
19-
13+
return dfs(num, 0, num.size() - 1);
2014
}
21-
void dfs(TreeNode *root, int left, int right, vector<int>& num) {
22-
if (left == right) {
23-
root->val = num[left];
24-
root->left = root->right = NULL;
25-
return;
15+
TreeNode* dfs(vector<int>& num, int start, int limit) {
16+
if (start > limit) {
17+
return NULL;
2618
}
27-
int mid = (left + right) / 2;
28-
root->val = num[mid];
29-
root->right = new TreeNode(0);
30-
dfs(root->right, mid + 1, right, num);
31-
if (mid != left) {
32-
root->left = new TreeNode(0);
33-
dfs(root->left, left, mid - 1, num);
19+
if (start == limit) {
20+
return new TreeNode(num[start]);
3421
}
22+
int middle = (start + limit) / 2;
23+
TreeNode* root = new TreeNode(num[middle]);
24+
root->left = dfs(num, start, middle - 1);
25+
root->right = dfs(num, middle + 1, limit);
26+
return root;
3527
}
36-
};
28+
};

0 commit comments

Comments
 (0)