Skip to content

Commit 47ba9dc

Browse files
committed
109. Convert Sorted List to Binary Search Tree
1 parent 1e2fed5 commit 47ba9dc

File tree

1 file changed

+40
-0
lines changed

1 file changed

+40
-0
lines changed
Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
//Runtime: 22 ms
2+
class Solution {
3+
public:
4+
5+
TreeNode* insert(TreeNode* root, int val)
6+
{
7+
if(!root)
8+
return new TreeNode(val);
9+
else if(root->val < val)
10+
return root->right = insert(root->right, val);
11+
else
12+
return root->left = insert(root->left, val);
13+
}
14+
15+
TreeNode* MakeBST(TreeNode* root, int l,int h, vector<int> &nums)
16+
{
17+
if(l>h)
18+
return NULL;
19+
20+
int mid = (l+h)/2;
21+
root = insert(root, nums[mid]);
22+
23+
root->right = MakeBST(root, mid+1, h, nums);
24+
root->left = MakeBST(root, l, mid-1, nums);
25+
26+
return root;
27+
28+
}
29+
TreeNode* sortedListToBST(ListNode* head) {
30+
vector<int> nums;
31+
32+
while(head!=NULL)
33+
{
34+
nums.push_back(head->val);
35+
head = head->next;
36+
}
37+
38+
return MakeBST(NULL, 0, nums.size()-1, nums);
39+
}
40+
};

0 commit comments

Comments
 (0)