Search Range in Binary Search Tree
题目:
Given two values k1 and k2 (where k1 < k2) and a root pointer to a Binary Search Tree. Find all the keys of tree in range k1 to k2. i.e. print all x such that k1<=x<=k2 and x is a key of given BST. Return all the keys in ascending order.
分析:
认真读题目,别人家问的<=,结果自己代码只写了<。
解法:
class Solution {
public:
/**
* @param root: The root of the binary search tree.
* @param k1 and k2: range k1 to k2.
* @return: Return all keys that k1<=key<=k2 in ascending order.
*/
void dfs(TreeNode* root, vector<int>& res, int k1, int k2) {
if (root == NULL) {
return;
}
if (root->val > k1) {
dfs(root->left, res, k1, k2);
}
if (k1 <= root->val && root->val <= k2) {
res.push_back(root->val);
}
if (root->val <= k2) {
dfs(root->right, res, k1, k2);
}
}
vector<int> searchRange(TreeNode* root, int k1, int k2) {
// write your code here
if (root == NULL) {
return vector<int>();
}
vector<int> res;
dfs(root, res, k1, k2);
return res;
}
};