Binary Search through an array
http://www.geeksforgeeks.org/sorted-array-to-balanced-bst/
The array needs to be sorted.
bool find(vector<int> arr, int left, int right, int elm) {
if(left > right) {
return false;
}
int middle = (left + right) / 2;
if(arr[middle] == elm) {
return true;
}
if(arr[i] < arr[middle])
return find(arr, left, middle, elm);
else
return find(arr, middle + 1, right, elm);
}
Sorted Array to BST
Node* arrayToBSTUtil(int arr, int left, int right) {
if(left > right) {
return nullptr;
}
int middle = (left + right) / 2;
Node* node = new Node(arr[middle]);
node->left = arrayToBSTUtil(arr, left, middle - 1);
node->right = arrayToBSTUtil(arr, middle + 1, right);
return root;
}
Node* arrayToBST(vector<int> arr, int left, int right) {
Node* root = arrayToBSTUtil(arr, 0, arr.size() - 1);
return root;
}