Ceil in BST
Given a BST and a number X, find Ceil of X.
Note: Ceil(X) is a number that is either equal to X or is immediately greater than X.
Example 1:
Input:
5
/ \
1 7
\
2
\
3
X = 3
Output: 3
Explanation: We find 3 in BST, so ceil
of 3 is 3.
Example 2:
Input:
10
/ \
5 11
/ \
4 7
\
8
X = 6
Output: 7
Explanation: We find 7 in BST, so ceil
of 6 is 7.
method :
c++ implementation:
vector<int>v; void printInorder(struct Node* node) { if (node == NULL) return; printInorder(node->left); v.push_back(node->data); printInorder(node->right); }
int findCeil(Node* root, int input) { if (root == NULL) return -1; while(!v.empty()) v.pop_back(); vector<int>::iterator i; printInorder(root); for(i=v.begin();i!=v.end();i++) { if(*i>=input) { return *i; } } return -1; }
Time Complexity: O(n)
space Complexity: O(n)
No comments