从标准输入中输入一组整数构造一棵二叉查找树,有序输出该查找树中所有大于a且小于b的元素。【输入形式】 先从标准输入读取整数的个数,然后第二行开始输入各个整数,整数之间以一个空格分隔。 第三行输入数据a、b,之间以一个空格分隔。【输出形式】最后从小到大依次输出大于a小于b的数,每个数之间以空格分隔。c++代码
时间: 2024-02-20 15:01:45 浏览: 60
以下是实现该功能的C++代码:
```c++
#include <iostream>
using namespace std;
struct TreeNode {
int val;
TreeNode *left;
TreeNode *right;
TreeNode(int x) : val(x), left(NULL), right(NULL) {}
};
void insert(TreeNode*& root, int val) {
if (root == NULL) {
root = new TreeNode(val);
} else if (val < root->val) {
insert(root->left, val);
} else {
insert(root->right, val);
}
}
void inorder(TreeNode* root, int a, int b) {
if (root == NULL) {
return;
}
inorder(root->left, a, b);
if (root->val > a && root->val < b) {
cout << root->val << " ";
}
inorder(root->right, a, b);
}
int main() {
int n;
cin >> n;
TreeNode* root = NULL;
for (int i = 0; i < n; i++) {
int x;
cin >> x;
insert(root, x);
}
int a, b;
cin >> a >> b;
inorder(root, a, b);
return 0;
}
```
其中,insert函数用于构建二叉查找树,inorder函数用于遍历二叉查找树并输出大于a小于b的数,main函数中首先读取输入的整数个数n,然后读取n个整数并插入到二叉查找树中,最后读取a和b,调用inorder函数输出符合条件的数。
阅读全文