-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathconvert_sorted_array_to_BST.cpp
More file actions
61 lines (56 loc) · 1.91 KB
/
convert_sorted_array_to_BST.cpp
File metadata and controls
61 lines (56 loc) · 1.91 KB
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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
//program to convert sorted array to BST
//problem link: https://leetcode.com/problems/convert-sorted-array-to-binary-search-tree/
/**
* Definition for a binary tree node.
* struct TreeNode {
* int val;
* TreeNode *left;
* TreeNode *right;
* TreeNode() : val(0), left(nullptr), right(nullptr) {}
* TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}
* TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {}
* };
*/
class Solution {
public:
// void printlevelorder(TreeNode * root)
// {
// queue<TreeNode*>q;
// q.push(root);
// while(!q.empty())
// {
// TreeNode * front = q.front();
// q.pop();
// cout<<front -> val<<" ";
// if(front -> left) q.push(front -> left);
// if(front -> right) q.push(front -> right);
// }
// }
// TreeNode* insertInBST(int left, int right, vector<int>vect)
// {
// if(left > right) return NULL;
// int mid = left + right /2;
// TreeNode * root = new TreeNode (vect[mid]);
// TreeNode * lft = insertInBST(left, mid - 1, vect);
// TreeNode * rht = insertInBST(mid + 1, right, vect);
// root -> left = lft;
// root -> right = rht;
// return root;
// }
TreeNode * createBST_fromArray(int left, int right, vector<int>vect)
{
if(left > right) return NULL;//base case
int mid = (left + right) /2;
TreeNode * root = new TreeNode(vect[mid]);
TreeNode * leftNode = createBST_fromArray(left, mid-1, vect);
TreeNode * rightNode= createBST_fromArray(mid+1, right, vect);
root -> left = leftNode;
root -> right = rightNode;
return root;
}
TreeNode* sortedArrayToBST(vector<int>& nums) {
if(nums.size() == 0) return NULL;
TreeNode * root = createBST_fromArray(0, nums.size() -1, nums);
return root;
}
};