C++在一棵二叉查找树中查找所有大于a且小于b的元素
时间: 2024-02-22 16:59:06 浏览: 61
可以通过中序遍历二叉查找树,找到第一个大于等于a的节点,然后继续中序遍历直到找到第一个大于b的节点,期间经过的所有节点即为大于a且小于b的元素。
具体的实现可以参考下面的代码:
```c++
struct TreeNode {
int val;
TreeNode* left;
TreeNode* right;
TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}
};
void inorder(TreeNode* root, int a, int b, vector<int>& res) {
if (!root) return;
if (root->val > a) {
inorder(root->left, a, b, res);
}
if (root->val >= a && root->val <= b) {
res.push_back(root->val);
}
if (root->val < b) {
inorder(root->right, a, b, res);
}
}
vector<int> searchRange(TreeNode* root, int a, int b) {
vector<int> res;
inorder(root, a, b, res);
return res;
}
```
其中,`inorder`函数用于中序遍历二叉查找树,`searchRange`函数为外部接口,返回所有大于a且小于b的元素。
阅读全文